题目描述

解题思路
- 首先使用splice方法,将nums1和nums2指定位置之后的无关元素去除。
- 如果二者其中有一个是空数组,则直接push到nums1中。
- 定义双指针,进行依次比较,小的放到nums1中。
- 判断左右指针谁先走到头的情况。
AC代码
var merge = function(nums1, m, nums2, n) {
nums1.splice(m);
nums2.splice(n);
if (nums1.length === 0 || nums2.length === 0) {
nums1.push(...nums2);
return;
}
let left = 0;
let right = 0;
while (left < nums1.length && right < nums2.length) {
if (nums1[left] <= nums2[right]) {
left++;
continue;
} else {
nums1.splice(left,0,nums2[right]);
right++
}
}
if (left === nums1.length && right < nums2.length) {
nums1.push(...nums2.slice(right));
}
};
题目反思
- 学会使用splice方法添加元素。
- 注意题目的要求是原地排序,直接赋值给一个参数是不会通过测试的。
- 学会使用双指针。