力扣链接:88.合并两个有序数组
难度:⭐
解题关键词:数组
解题思路:从后面往前面,然后一直对比大小,将大的设置到 nums1 中的最后面。
typescript
function merge(nums1: number[], m: number, nums2: number[], n: number): void {
// nums1 有效数字最后面
let index1 = m - 1;
// nums2 最后面
let index2 = n - 1;
// nums1 最后面
let tail = m + n - 1;
// 比较 nums1 和 nums2 最后面哪个最大
let cur;
while (index1 >= 0 || index2 >= 0) {
// nums1 数组已经走完了
if (index1 < 0) {
cur = nums2[index2--];
} else if (index2 < 0) { // nums2 数组已经走完了
cur = nums1[index1--];
} else if (nums1[index1] >= nums2[index2]) { // nums1 中后面的数字大
cur = nums1[index1--];
} else {
cur = nums2[index2--];
}
// 设置到 nums1 最后面,然后将指针前移
nums1[tail--] = cur;
}
}