资讯专栏INFORMATION COLUMN

[Leetcode] Merge Sorted Array 合并数组

quietin / 1142人阅读

摘要:但是如果我们从后往前,合并到第一个数组的最后,则不用位移。注意将和都先减,用和来代表下标,避免两个数组为空时抛出空指针异常。

Merge Sorted Array 最新更新请见:https://yanjia.me/zh/2019/02/...
Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.

Note: You may assume that nums1 has enough space (size that is greater or equal to m + n) to hold additional elements from nums2. The number of elements initialized in nums1 and nums2 are m and n respectively.

倒序存储 复杂度

时间 O(N+M) 空间 O(1)

思路

提示第一个数组的大小足以装两个数组,所以自然想到把两个数组都合并到第一个数组中,但是第一个数组前面都是有用的信息,如果直接从前面加,我们得将后面所有的数都位移。但是如果我们从后往前,合并到第一个数组的最后,则不用位移。

注意

将m和n都先减1,用m和n来代表下标,避免两个数组为空时抛出空指针异常。

代码
public class Solution {
    public void merge(int[] nums1, int m, int[] nums2, int n) {
        m = m - 1;
        n = n - 1;
        int i = m + n + 1;
        while(m >= 0 || n >= 0){
            if(m < 0){
                nums1[i--] = nums2[n--];
            } else if(n < 0) {
                nums1[i--] = nums1[m--];
            } else {
                nums1[i--] = nums1[m] > nums2[n] ? nums1[m--] : nums2[n--];
            }
        }
    }
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/64472.html

相关文章

  • leetcode88 Merge Sorted Array

    摘要:题目要求将两个有序数组合并至其中一个数组并且该新数组仍然有序。所以我们可以换一种思维方式,从大至小遍历,这样可以将较大的元素直接填入当前的位置而且不用考虑移动其它的元素。 题目要求 Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note: You...

    taohonghui 评论0 收藏0
  • 前端 | 每天一个 LeetCode

    摘要:在线网站地址我的微信公众号完整题目列表从年月日起,每天更新一题,顺序从易到难,目前已更新个题。这是项目地址欢迎一起交流学习。 这篇文章记录我练习的 LeetCode 题目,语言 JavaScript。 在线网站:https://cattle.w3fun.com GitHub 地址:https://github.com/swpuLeo/ca...我的微信公众号: showImg(htt...

    张汉庆 评论0 收藏0
  • LeetCode 攻略 - 2019 年 7 月上半月汇总(55 题攻略)

    摘要:微信公众号记录截图记录截图目前关于这块算法与数据结构的安排前。已攻略返回目录目前已攻略篇文章。会根据题解以及留言内容,进行补充,并添加上提供题解的小伙伴的昵称和地址。本许可协议授权之外的使用权限可以从处获得。 Create by jsliang on 2019-07-15 11:54:45 Recently revised in 2019-07-15 15:25:25 一 目录 不...

    warmcheng 评论0 收藏0
  • LeetCode 之 JavaScript 解答第23题 —— 合并K个有序链表(Merge K S

    摘要:分治算法递归每层操作分解将原问题分解成一系列的子问题。分治算法满足的条件可分解原问题与分解成的小问题具有相同的模式无关联原问题分解成的子问题可以独立求解,子问题之间没有相关性,这一点是分治算法跟动态规划的明显区别。 Time:2019/4/10Title: Merge K Sorted ListsDifficulty: DifficultyAuthor: 小鹿 题目:Merge K...

    zhou_you 评论0 收藏0
  • leetcode 88 Merge Sorted Array

    摘要:题目假设数组的长度大于需要排序的元素数量数组的后位为。解法看到这道题时一种常规思路可能是,从头遍历两个数组,将的元素插入到的合适的位置。 题目详情 Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. 题目的意思是,输入两个已经排好序的数组nums1和nu...

    bbbbbb 评论0 收藏0

发表评论

0条评论

quietin

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<