思路: 比较两个数组中最大的数(数组是非递减的), 选取大的那个, 从nums1的最后边赋值.
.
.
.
/**
* @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) {
let i = m - 1
let j = n - 1
let k = m + n - 1 // 指向nums1的最后一个位置
while (j >= 0) {
if (nums1[i] > nums2[j]) {
nums1[k] = nums1[i]
// i用掉了, i--
i--
} else {
nums1[k] = nums2[j]
// j用掉了, j--
j--
}
k-- // 反正最后一个位置都会被用掉的, --
}
console.log(nums1);
}
// 测试用例
merge([1,3,9,0,0],3,[2,10],2)
.
.
.
输出结果: