不正经IT从业者

合并两个有序数组

2020-06-21  本文已影响0人  Mark_大东

合并两个有序数组

难度:简单

给你两个有序整数数组 nums1nums2,请你将 nums2 合并到 nums1使 nums1 成为一个有序数组。

关键点:有序数组

第一种方法

// 数组合并,然后排序,注意区分concat、splice
var merge = function(nums1, m, nums2, n) {
    nums1.splice(m,n,...nums2)
    return nums1.sort((a,b)=>a-b)
};

// 相同的方式,这个更好理解
var merge = function(nums1, m, nums2, n) {
    for (let i = 0 ; i < n ; i ++){
        nums1[m + i] = nums2[i]
    }
    return nums1.sort((a,b)=>a-b)
};

第二种方法:

//有序数组,最后一个是最大
//从nums1的最后一个插入,即:p = m + n - 1
var merge = function(nums1, m, nums2, n) {
    let p1 = m - 1
    let p2 = n - 1
    let p = m + n - 1
    while (p2 >= 0){
        if (nums1[p1] > nums2[p2]){
            nums1[p] = nums1[p1]
            p -- 
            p1 --
        }else{
            nums1[p] = nums2[p2];
            p -- 
            p2 --
        }
    }
};
上一篇 下一篇

猜你喜欢

热点阅读