美文网首页不正经IT从业者
合并两个有序数组

合并两个有序数组

作者: Mark_大东 | 来源:发表于2020-06-21 21:04 被阅读0次

    合并两个有序数组

    难度:简单

    给你两个有序整数数组 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 --
            }
        }
    };
    

    相关文章

      网友评论

        本文标题:合并两个有序数组

        本文链接:https://www.haomeiwen.com/subject/avqzxktx.html