88. 合并两个有序数组
一开始以为是要return一个排序好的数组,没想到是改变nums1就好了。。。。
思路:
nums1其实是nums1本身的元素加上nums2的元素,只是nums2的元素在nums1里一开始是0,需要手动合并数组后排序。
两种方法:
- 循环加入
for (let i = 0; i < n; i++) {
const v = nums2[i];
nums1[i + m] = v;
}
- splice
nums1.splice(m, n, ...nums2);
// slice用法
Array.prototype.splice(start,delete,add1,add2...)
// start => 数组开始的下标
// delete => 下标开始需要删除元素的个数
// add1,add2 => 下标开始需要增加的元素,逗号隔开
题解:
var merge = function (nums1, m, nums2, n) {
// 1.循环
for (let i = 0; i < n; i++) {
const v = nums2[i];
nums1[i + m] = v;
}
// 2.splice
nums1.splice(m, n, ...nums2);
// 3.统一排序
nums1.sort((a, b) => a - b);
};
console.log(merge([0], 0, [1], 1));