image.png

更简单的解法,组合+排序就不多说了,主要研究双指针

思路:(逆向双指针)

image.png

  • 已知nums1的长度为m+n,所以就可以直接将k指针放在nums1最后,直接看代码吧。
  1. let nums1 = [4, 0, 0, 0, 0, 0], m = 1, nums2 = [1, 2, 3, 5, 6], n = 5
  2. var merge = function (nums1, m, nums2, n) {
  3. let i = m - 1, j = n - 1, k = m + n - 1
  4. while (i >= 0 || j >= 0) {
  5. if (i < 0) nums1[k--] = nums2[j--]
  6. else if (j < 0) nums1[k--] = nums1[i--]
  7. else if (nums1[i] > nums2[j]) nums1[k--] = nums1[i--]
  8. else nums1[k--] = nums2[j--]
  9. }
  10. console.log(nums1);
  11. };