更简单的解法,组合+排序就不多说了,主要研究双指针
思路:(逆向双指针)
- 已知nums1的长度为m+n,所以就可以直接将k指针放在nums1最后,直接看代码吧。
let nums1 = [4, 0, 0, 0, 0, 0], m = 1, nums2 = [1, 2, 3, 5, 6], n = 5
var merge = function (nums1, m, nums2, n) {
let i = m - 1, j = n - 1, k = m + n - 1
while (i >= 0 || j >= 0) {
if (i < 0) nums1[k--] = nums2[j--]
else if (j < 0) nums1[k--] = nums1[i--]
else if (nums1[i] > nums2[j]) nums1[k--] = nums1[i--]
else nums1[k--] = nums2[j--]
}
console.log(nums1);
};