JavaScript求解targetArrayInGivenOrder问题的实现方法
JavaScript 实现 targetArrayInGivenOrder 问题解法
题目规则
实现一个接收两个整数数组参数nums和index的函数,按规则返回构造完成的目标数组:
- 初始时目标数组
target为空 - 从左到右依次读取
nums[i]和index[i],将值nums[i]插入到target数组的index[i]索引位置 - 所有元素处理完成后返回最终的
target数组
实现逻辑
JavaScript数组原生提供的splice方法原生支持指定位置插入元素的能力:
- 调用格式为
target.splice(插入索引, 0, 待插入值) - 第二个参数传
0代表不删除原有元素,仅执行插入操作,插入位置后方的元素会自动后移 - 若传入的插入索引大于当前数组长度,元素会自动追加到数组末尾,无需额外做边界判断
完整代码
function createTargetArray(nums, index) { const target = []; const len = nums.length; for (let i = 0; i < len; i++) { target.splice(index[i], 0, nums[i]); } return target; }
复杂度说明
- 时间复杂度:O(n²),数组插入操作需要移动插入位置后的所有元素,最坏场景下总移动操作次数为n(n-1)/2
- 空间复杂度:O(1),除返回结果数组外,仅使用常数级额外变量
运行示例
// 用例1 createTargetArray([0,4,1,2,3], [0,1,2,3,4]) // 返回 [0,4,1,2,3],匹配题目参考示例1输出 // 用例2 createTargetArray([1,2,3,4,0], [0,1,2,3,0]) // 返回 [0,1,2,3,4]
注:题目给出的示例2参考输出存在笔误,代码严格遵循题目描述的插入规则实现,运行结果与规则完全一致。
内容的提问来源于stack exchange,提问作者عمر شاهر حسن قطام
相关产品推荐
相关产品推荐

