JS合并两个有序数组
代码如下:
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] |
本文内容仅供个人学习/研究/参考使用,不构成任何决策建议或专业指导。分享/转载时请标明原文来源,同时请勿将内容用于商业售卖、虚假宣传等非学习用途哦~感谢您的理解与支持!