[JavaScript LeetCode]88. 合并两个有序数组
给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。
说明:
- 初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。
- 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。
示例:
输入: |
解法一
直接在不超过数组空间的情况下合并两个数组(splice),再进行排序。
var merge = function (nums1, m, nums2, n) { |
解法二
设置指针 len1 和 len2 分别指向 nums1 和 nums2 的有数字尾部,从尾部值开始比较遍历,同时设置指针 len 指向 nums1 的最末尾,每次遍历比较值大小之后,则进行填充。
当 len2 先小于 0 时,此时 num2 已全部填充进 nums1 中,则已经得到目标结果。 若 len1 先小于 0 时,表明此时 nums2 中 len2 之前的值都比 nums1 中的元素小,替换掉 nums1 中长度为 len2 + 1 的元素即可。
var merge = function (nums1, m, nums2, n) { |