开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第 34 天,点击查看活动详情
问题描述
给你两个整数数组 nums 和 index。你需要按照以下规则创建目标数组:
- 目标数组
target最初为空。 - 按从左到右的顺序依次读取
nums[i]和index[i],在target数组中的下标index[i]处插入值nums[i]。 - 重复上一步,直到在
nums和index中都没有要读取的元素。
请你返回目标数组。
题目保证数字插入位置总是存在。
示例 1:
输入: nums = [0,1,2,3,4], index = [0,1,2,2,1]
输出: [0,4,1,3,2]
解释:
nums index target
0 0 [0]
1 1 [0,1]
2 2 [0,1,2]
3 2 [0,1,3,2]
4 1 [0,4,1,3,2]
示例 2:
输入: nums = [1,2,3,4,0], index = [0,1,2,3,0]
输出: [0,1,2,3,4]
解释:
nums index target
1 0 [1]
2 1 [1,2]
3 2 [1,2,3]
4 3 [1,2,3,4]
0 0 [0,1,2,3,4]
示例 3:
输入: nums = [1], index = [0]
输出: [1]
提示:
1 <= nums.length, index.length <= 100nums.length == index.length0 <= nums[i] <= 1000 <= index[i] <= i
思路分析
首先我们要先理解一下题目的意思,题目会给我们两个数组nums 和 index,nums记录了我们需要插入结果数组的元素,index记录nums中每个元素需要插入的位置,我们需要按从左到右的顺序依次读取 nums[i] 和 index[i],在 target 数组中的下标 index[i] 处插入值 nums[i] 。
如:nums = [0,1,2,3,4], index = [0,1,2,2,1]
我们从左往右遍历,原始的target数组为空:[];
- 遍历到第一个元素时,我们需要在下标为
0处插入元素0,此时target为[0] - 遍历到第二个元素时,我们需要在下标为
1处插入元素1,此时target为[0,1] - 遍历到第三个元素时,我们需要在下标为
2处插入元素2,此时target为[0,1,2] - 遍历到第四个元素时,我们需要在下标为
2处插入元素3,此时target为[0,1,3,2] - 遍历到第五个元素时,我们需要在下标为
1处插入元素4,此时target为[0,4,1,3,2]
我们可以简单的进行模拟,使用数组的splice方法即可模拟题目的插入方式,array.splice(index,0,insertValue),第一个参数(插入位置),第二个参数(0),第三个参数(插入的项)。
AC 代码
完整代码如下:
/**
* @param {number[]} nums
* @param {number[]} index
* @return {number[]}
*/
var createTargetArray = function(nums, index) {
const res = [];
for(let i = 0; i < nums.length; i++){
res.splice(index[i],0,nums[i]);
}
return res;
};
说在后面
本人为算法业余爱好者,平时只是随着兴趣偶尔刷刷题,如果上面分享有错误的地方,欢迎指出,感激不尽。