function merge(nums1, nums2) {
var len1 = nums1.length - 1;
var len2 = nums2.length - 1;
var len = nums1.length + nums2.length - 1;
while (len1 >= 0 && len2 >= 0) {nums1[len--] = nums1[len1] > nums2[len2] ? nums1[len1--] : nums2[len2--];
}
return nums1;
}
输入
[1, 2, 3] [2, 4, 5, 6, 7, 8, 9]
输出
[1, 2, 2, 3, 4, 5, 6, 7, 8, 9]
解析
- 获取数组 1, 数组 2 以及合并之后的数组的长度
从后遍历比较, 当 len1 或 len2 为 0 的时候退出
序号 len1 len2 len nums1[len1] nums2[len2] nums 1 2 6 9 3 9 [1, 2, 3, empty*6, 9] 2 2 5 8 3 8 [1, 2, 3, empty*5, 8, 9] 3 2 4 7 3 7 [1, 2, 3, empty*4, 7, 8, 9] 4 2 3 6 3 6 [1, 2, 3, empty*3, 6, 7, 8, 9] 5 2 2 5 3 5 [1, 2, 3, empty*2, 5, 6, 7, 8, 9] 6 2 1 4 3 4 [1, 2, 3, empty*1, 4, 5, 6, 7, 8, 9] 7 1 1 3 3 2 [1, 2, 3, 3, 4, 5, 6, 7, 8, 9] 8 0 1 2 2 2 [1, 2, 2, 3, 4, 5, 6, 7, 8, 9]