Appearance
088合并数组
code
javascript
/**
* @param {number[]} nums1
* @param {number} m
* @param {number[]} nums2
* @param {number} n
* @return {void} Do not return anything, modify nums1 in-place instead.
*/
var merge = function(nums1, m, nums2, n) {
if(n === 0) {
return nums1;
}
let ind1 = m - 1;
let ind2 = n - 1;
let indLast = nums1.length - 1;
while(ind1 >= 0 && ind2 >= 0){
if(nums1[ind1] < nums2[ind2]){
nums1[indLast] = nums2[ind2];
ind2--;
indLast--;
} else {
[nums1[indLast], nums1[ind1]] = [nums1[ind1], nums1[indLast]];
indLast--;
ind1--;
}
}
// 有一个干了
if(ind2 < 0) {
return;
}
for(let i = ind2; i >=0; i--){
nums1[i] = nums2[i];
}
return;
};总结
- 反正看见有序,迭代,数组基本就是双指针,没啥毛病,但是他内里有什么数学结构么,比如说为啥链表用快慢指针,数组,字符串用双指针遍历,我觉得比较神奇
- 做题时候可以手写个 [1,2,3,0,0,0] [4,5,6]出来可以测一下
- 没啥毛病,又这个思路没k应该也还好