从最大的开始排列,排完之后剩余的塞入nums1前面即可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
var merge = function (nums1, m, nums2, n) { let len = m + n - 1, idx1 = m - 1, idx2 = n - 1; while (len >= 0) { while (idx1 >= 0 && idx2 >= 0) { if (nums1[idx1] >= nums2[idx2]) { nums1[len--] = nums1[idx1--]; } else { nums1[len--] = nums2[idx2--]; } } if (idx1 >= 0) { while (idx1 >= 0) { nums1[len--] = nums1[idx1--]; } } if (idx2 >= 0) { while (idx2 >= 0) { nums1[len--] = nums2[idx2--]; } } } };
|