【leetcode】88.合并两个有序数组js

题目

代码

我思路比较简单粗暴,直接把nums2拼到nums1后面一半全是0的地方,之后调用array的sort。

这个的时间复杂度是O(nlogn)。

javascript 复制代码
/**
 * @param {number[]} nums1
 * @param {number} m
 * @param {number[]} nums2
 * @param {number} n
 * @return {void} Do not return anything, modify nums1 in-place instead.
 */
var merge = function(nums1, m, nums2, n) {
    if (n === 0) return
    let ptr2 = 0
    for (let i = m; i < nums1.length; i++) {
        nums1[i] = nums2[ptr2]
        ptr2++
    }
    nums1.sort((a, b) => a - b)
};

题解代码学习

原题解链接(有画解):https://leetcode.cn/problems/merge-sorted-array/solutions/13005/hua-jie-suan-fa-88-he-bing-liang-ge-you-xu-shu-zu-/

因为 nums1 的空间都集中在后面,所以从后向前处理排序 的数据会更好,节省空间,一边遍历一边将值填充进去。

设置指针 len1 和 len2 分别指向 nums1 和 nums2 的有数字尾部,从尾部值开始比较遍历,同时设置指针 len 指向 nums1 的最末尾,每次遍历比较值大小之后,则进行填充。

当 len1<0 时遍历结束,此时 nums2 中海油数据未拷贝完全,将其直接拷贝到 nums1 的前面,最后得到结果数组。

时间复杂度:O(m+n)

javascript 复制代码
/**
 * @param {number[]} nums1
 * @param {number} m
 * @param {number[]} nums2
 * @param {number} n
 * @return {void} Do not return anything, modify nums1 in-place instead.
 */
var merge = function(nums1, m, nums2, n) {
    let p = m - 1, q = n-1, tail = m + n - 1
    let cur
    while (p > -1 || q > -1) {
        if (p === -1) {
            cur = nums2[q]
            q--
        } else if (q === -1) {
            cur = nums1[p]
            p--
        } else if (nums1[p] >= nums2[q]) {
            cur = nums1[p]
            p--
        } else if (nums1[p] < nums2[q]) {
            cur = nums2[q]
            q--
        }
        nums1[tail] = cur
        tail --
    }
    return nums1
};
相关推荐
徐小夕9 小时前
花了一周,3亿tokens,我开源了一款 Word 文档智能审查平台,文稿自动质检+可视化分析,告别低效人工审核
前端·算法·github
可编程芯片开发11 小时前
UPFC统一潮流控制器的simulink建模与仿真
算法
小小仙子11 小时前
矢量网络分析仪如何测试S参数的?
人工智能·算法·机器学习
中微极客13 小时前
降维算法75倍加速:从PCA到稀疏字典学习的工程实践
人工智能·学习·算法
storyseek13 小时前
前缀和实现Kogge-Stone算法
数据结构·算法
元Y亨H14 小时前
开发者必须掌握的十大核心算法
算法
元Y亨H14 小时前
深度解构:数据结构与算法的理论基石与工程演进
数据结构·算法
元Y亨H14 小时前
数据结构与算法的通俗指南
数据结构·算法
2301_7644413314 小时前
用动力学系统(微分方程)为 Kernberg 的客体关系单元提供数学化的操作定义,把“自体—客体“这对心理结构建模成一个二维耦合系统
数据结构·python·算法·数学建模