跳到主要内容

数组合并

2024年04月09日
柏拉文
越努力,越幸运

一、合并两个有序数组


1.1 逆向双指针

思路: 可以指针设置为从后向前遍历,每次取两者之中的较大者放进 nums1 的最后面

实现

function merge(nums1,m,nums2,n){
let p1 = m-1;
let p2 = n-1;
let tail = m+n-1;
let curr;
while(p1 >= 0 || p2>= 0){
if(p1 === -1){
curr = nums2[p2--];
}else if(p2 === -1){
curr = nums1[p1--];
}else if(nums1[p1]>nums2[p2]){
curr = nums1[p1--];
}else{
curr = nums2[p2--]
}
nums1[tail--] = curr;
}
}