JS合并两个有序数组

摘要:获取数组1,数组2以及合并之后的数组的长度,从后遍历比较,当len1或len2为0的时候退出。输入[1, 2, 3] [2, 4, 5, 6, 7, 8, 9]输出[1, 2, 2, 3, 4, 5, 6, 7, 8, 9]

代码如下:

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的时候退出

序号len1len2lennums1[len1]nums2[len2]nums
126939[1, 2, 3, empty*6, 9]
225838[1, 2, 3, empty*5, 8, 9]
324737[1, 2, 3, empty*4, 7, 8, 9]
423636[1, 2, 3, empty*3, 6, 7, 8, 9]
522535[1, 2, 3, empty*2, 5, 6, 7, 8, 9]
621434[1, 2, 3, empty*1, 4, 5, 6, 7, 8, 9]
711332[1, 2, 3, 3, 4, 5, 6, 7, 8, 9]
801222[1, 2, 2, 3, 4, 5, 6, 7, 8, 9]

本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://shenqiku.cn/article/FLY_5444