题面

给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 使得 num1 成为一个有序数组。

样例

  1. 1. 输入:
  2. nums1 = [1,2,3,0,0,0], m = 3
  3. nums2 = [2,5,6], n = 3
  4.  
  5. 输出: [1,2,2,3,5,6]
  6.  
  7. 2. 输入:
  1. nums1 = [0], m = 0
  2. nums2 = [6], n = 1
  3. 输出: [6]

算法

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

与合并有序链表类似。

1. 如果m为0,直接返回就可以了。如果n为0,则需要把nums2中前n个元素都搬到nums1中,返回。

2. 如果,m、n都不为0,计算合并后的元素数len = m+n, 我们从后往前为nums1[len--]赋max(nums1[m]nums2[n]), 之后较大的数组下标自减(已经比较后填入了nums1中),直到某个数组被遍历完。

3. 如果2之后,m == 0,那么代表nums1中的元素都已经填完了,就把nums2中剩下的元素按次序填入nums1中即可;如果 n == 0,即nums2填完了,那就结束,剩下的nums1本来就是有序的。

源码

  1. class Solution {
  2. public:
  3. void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
  4. if(n == )
  5. return ;
  6. else if(m == )
  7. {
  8. for(int i=; i<n; i++)
  9. nums1[i] = nums2[i];
  10. }
  11.  
  12. //从往前放置
  13. int len = m+n-;
  14. m--; n--;
  15. while(m >= && n >= && len >= )
  16. {
  17. if(nums1[m] < nums2[n])
  18. {
  19. nums1[len] = nums2[n];
  20. len--; n--;
  21. }
  22. else
  23. {
  24. nums1[len] = nums1[m];
  25. len--; m--;
  26. }
  27. }
  28. if(m < )
  29. {
  30. for(int i=; i<=n; i++)
  31. nums1[i] = nums2[i];
  32. }
  33. }
  34. };

leetcode-88. 合并两个有序数组 · Aaray的更多相关文章

  1. Java实现 LeetCode 88 合并两个有序数组

    88. 合并两个有序数组 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 的元 ...

  2. Leetcode 88 合并两个有序数组 Python

    合并两个有序数组 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 的元素数量分 ...

  3. LeetCode 88. 合并两个有序数组

    题目: 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 的元素数量分别为 m ...

  4. LeetCode 88. 合并两个有序数组(Merge Sorted Array)

    题目描述 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 的元素数量分别为 m ...

  5. [LeetCode每日一题]88. 合并两个有序数组

    [LeetCode每日一题]88. 合并两个有序数组 问题 给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组. 初始化 n ...

  6. 【LeetCode】88. 合并两个有序数组

    88. 合并两个有序数组 知识点:数组:排序:双指针: 题目描述 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 ...

  7. leetcode.双指针.88合并两个有序数组-Java

    1. 具体题目 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 的元素数量分别 ...

  8. leetcode刷题-88.合并两个有序数组

    题目 给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 的元素数量分别为 m ...

  9. 领扣(LeetCode)合并两个有序数组 个人题解

    给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n. ...

随机推荐

  1. 阶段5 3.微服务项目【学成在线】_day09 课程预览 Eureka Feign_11-课程详情页面静态化-课程信息模板设计

    测试模板 页面的模板已经做好了 直接那来用 测试模板,把这个模板copy到这个测试freemarker的resources目录 远程调用 获取数据 返回模板的文件名 tomcat不支持ssr.ngin ...

  2. CerntOS7下搭建git服务器

    (1).安装git yum安装git,需要ssh的支持.某些版本需要安装git-core,那才是服务器. [root@youxi1 ~]# yum -y install git 创建git用户 [ro ...

  3. 123457123457#0#-----com.yuming.drawGame01--前拼后广--儿童画画游戏

    com.yuming.drawGame01--前拼后广--儿童画画游戏

  4. PAT 甲级 1050 String Subtraction (20 分) (简单送分,getline(cin,s)的使用)

    1050 String Subtraction (20 分)   Given two strings S​1​​ and S​2​​, S=S​1​​−S​2​​ is defined to be t ...

  5. Lombok子类与父类的@Builder注解冲突

    解决方法之一:去掉父类的@builder 缺点:父类不能使用Builder构造器模式 来源:https://www.cnblogs.com/lori/p/10266508.html

  6. LeetCode_104. Maximum Depth of Binary Tree

    104. Maximum Depth of Binary Tree Easy Given a binary tree, find its maximum depth. The maximum dept ...

  7. html的css背景图的repeat

    HTML里background-image中,可以设置background-repeat实现平铺,前面博文中关于css样式换行的(相关博文:超文本css样式换行),其中有个三个div组合的,中间的di ...

  8. SQL Server中的加密

    参考文献: 细说SQL Server中的加密 Transparent Data Encryption (TDE) Database Encryption Key (DEK) management SQ ...

  9. C#登录SSH执行命令,下载文件

    前言 批量登录SSH执行命令 ,把应急响应中的日志文件下载回来. 代码实现 Renci.SshNet编译出DLL,引用. using System; using System.Collections. ...

  10. iOS-textfield控制光标开始位置

    //    UIView *paddingView1 = [[UIView alloc] initWithFrame:CGRectMake(0, 64, self.view.frame.size.wi ...