问题

该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/3686 访问。

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

说明:

  • 初始化 nums1 和 nums2 的元素数量分别为 m 和 n
  • 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。

输入:

nums1 = [1,2,3,0,0,0], m = 3

nums2 = [2,5,6],       n = 3

输出: [1,2,2,3,5,6]


Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.

Note:

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

Input:

nums1 = [1,2,3,0,0,0], m = 3

nums2 = [2,5,6],       n = 3

Output: [1,2,2,3,5,6]


示例

该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/3686 访问。

public class Program {public static void Main(string[] args) {int[] nums1 = { 1, 3, 5, 7, 9, 0, 0, 0, 0, 0 };int[] nums2 = { 2, 4, 6, 8, 10 };Merge(nums1, 5, nums2, 5);ShowArray(nums1);Console.ReadKey();}private static void ShowArray(int[] array) {foreach(var num in array) {Console.Write($"{num} ");}Console.WriteLine();}private static void Merge(int[] nums1, int m, int[] nums2, int n) {//双指针法扫描数组int point1 = m - 1;int point2 = n - 1;//指针,试图向第1个数组从后往前填充数值int index = m + n - 1;//从后往前扫描双数组while(point1 >= 0 && point2 >= 0) {//如果数组1中的值大,则将数组1中的数据放入数组1中的后面部分if(nums1[point1] > nums2[point2]) {nums1[index--] = nums1[point1--];//否则,则将数组2中的数据放入数组1中的后面部分} else {nums1[index--] = nums2[point2--];}}//当数组2中的值提前结束时,复制数组1中余下的部分while(point1 >= 0) {nums1[index--] = nums1[point1--];}//当数组1中的值提前结束时,复制数组2中余下的部分while(point2 >= 0) {nums1[index--] = nums2[point2--];}}}

以上给出1种算法实现,以下是这个案例的输出结果:

该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/3686 访问。

1 2 3 4 5 6 7 8 9 10

分析:

显而易见,以上参考算法在最坏的情况下的时间复杂度为:  。

C#LeetCode刷题之#88-合并两个有序数组(Merge Sorted Array)相关推荐

  1. LeetCode刷题Java——88.合并两个有序数组(简单)

    题目 给你两个按非递减顺序排列的整数数组nums1和nums2,另有两个整数m和n,分别表示nums1和nums2中的元素数目. 请你合并nums2到nums1中,使合并后的数组同样按非递减顺序排列. ...

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

    首先,这个题中给出的函数没有返回值,所以就意味着我们不能另建一个数组来做合并! 第一种思路: 第一步:比较nums1和nums2,使nums2最小值大于nums1的最大值,而在这个过程要保持nums2 ...

  3. LeetCode每日一练 —— 88. 合并两个有序数组

  4. LeetCode 88. 合并两个有序数组 golang

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

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

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

  6. leetcode 88. 合并两个有序数组

    88. 合并两个有序数组 class Solution {public:void merge(vector<int>& nums1, int m, vector<int> ...

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

    88. 合并两个有序数组 思路:归并排序,一长一短,肯定会有一个先放完,放完后把另一个拷贝过去即可. 为了避免覆盖所以从最后开始向前放最大的元素 class Solution {public:void ...

  8. 双指针:88. 合并两个有序数组

    题目链接 88. 合并两个有序数组 解题思路 一. 合并数组后排序,时间复杂度为O((n+m)log(n+m)) 代码: 快排详解 class Solution {public void merge( ...

  9. 88. 合并两个有序数组 golang

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

最新文章

  1. 有了阿里云服务器如何运行Javaweb项目【安转JDK】【安装mysql】【安装Tomcat】【永久运行】
  2. Android XML 不常用属性
  3. 设计模式之_动态代理_03
  4. 答疑:有关一例EXT3文件系统故障
  5. 2021.NET Conf China上的GraphQL
  6. 前端动画 wow.js 效果
  7. Struts2之前台表单传值到后台Action方法总结
  8. cell数组变为字符串_字符串匹配 ---- BM 算法原理
  9. bianma 水平 技巧
  10. wpf button无边框_中国式新房无玄关?客厅真不缺这点面积!
  11. 稳压二极管及特性介绍
  12. wifi良好,手机可以连接网络,电脑连接不上网络,解决方法
  13. 心理实验应用计算机的优缺点,发展心理学研究方法发展的新趋势
  14. 学习通考试刷题(ocs网课助手)
  15. ro素质点模拟器_仙境传说RO:最具人气职业猎人成长攻略手册
  16. 华为分布式文件存储服务器配置,分布式存储服务器
  17. Discus 论坛 在 pc 电脑上 访问手机版 ( mobile ) 和 触屏版(touch)设置
  18. Python与人工神经网络(2)——使用神经网络识别手写图像
  19. (转)iOS6和Xcode4.5初体验-图多杀猫
  20. 变量——整型变量 浮点型变量 字符型变量

热门文章

  1. JLabel鼠标停在上面显示小手图标 点击跳转到相应网页
  2. C/C++——从ctime使用到随便测一样冒泡排序和堆排序的效率
  3. 【Latex】下标放在符号正下方
  4. 【今日CV 计算机视觉论文速览 第116期】Mon, 13 May 2019
  5. Kubernetes—StatefulSet部署有状态应用详解(二十四)
  6. 爬虫-请求图片并打开显示图片
  7. jquery-索引2019
  8. SELinux导致PHP连接MySQL异常Can't connect to MySQL server的解决方法
  9. Hive+LDAP+Sentry
  10. SpringBoot入门之上传文件