合并两个有序数组
双指针
要求直接修改第一个数组,若从小到大排序显然会覆盖数据,所以反向从大到小则没有问题了。
function merge(nums1: number[], m: number, nums2: number[], n: number): void {
let p1 = m - 1, p2 = n - 1, tail = m + n - 1
let cur = 0
while (p1 >= 0 || p2 >= 0) {
if (p1 === -1) {
cur = nums2[p2--]
} else if (p2 === -1) {
cur = nums1[p1--]
} else if (nums1[p1] > nums2[p2]) {
cur = nums1[p1--]
} else {
cur = nums2[p2--]
}
nums1[tail--] = cur
}
}