C#LeetCode刷题之#88-合并两个有序数组(Merge Sorted Array)
问题
该文章的最新版本已迁移至个人博客【比特飞】,单击链接 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)相关推荐
- LeetCode刷题Java——88.合并两个有序数组(简单)
题目 给你两个按非递减顺序排列的整数数组nums1和nums2,另有两个整数m和n,分别表示nums1和nums2中的元素数目. 请你合并nums2到nums1中,使合并后的数组同样按非递减顺序排列. ...
- LeetCode 88. 合并两个有序数组(Merge Sorted Array)
首先,这个题中给出的函数没有返回值,所以就意味着我们不能另建一个数组来做合并! 第一种思路: 第一步:比较nums1和nums2,使nums2最小值大于nums1的最大值,而在这个过程要保持nums2 ...
- LeetCode每日一练 —— 88. 合并两个有序数组
- LeetCode 88. 合并两个有序数组 golang
88. 合并两个有序数组 给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 ...
- Java实现 LeetCode 88 合并两个有序数组
88. 合并两个有序数组 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 的元 ...
- leetcode 88. 合并两个有序数组
88. 合并两个有序数组 class Solution {public:void merge(vector<int>& nums1, int m, vector<int> ...
- LeetCode-双指针-88. 合并两个有序数组
88. 合并两个有序数组 思路:归并排序,一长一短,肯定会有一个先放完,放完后把另一个拷贝过去即可. 为了避免覆盖所以从最后开始向前放最大的元素 class Solution {public:void ...
- 双指针:88. 合并两个有序数组
题目链接 88. 合并两个有序数组 解题思路 一. 合并数组后排序,时间复杂度为O((n+m)log(n+m)) 代码: 快排详解 class Solution {public void merge( ...
- 88. 合并两个有序数组 golang
88. 合并两个有序数组 给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 ...
最新文章
- 有了阿里云服务器如何运行Javaweb项目【安转JDK】【安装mysql】【安装Tomcat】【永久运行】
- Android XML 不常用属性
- 设计模式之_动态代理_03
- 答疑:有关一例EXT3文件系统故障
- 2021.NET Conf China上的GraphQL
- 前端动画 wow.js 效果
- Struts2之前台表单传值到后台Action方法总结
- cell数组变为字符串_字符串匹配 ---- BM 算法原理
- bianma 水平 技巧
- wpf button无边框_中国式新房无玄关?客厅真不缺这点面积!
- 稳压二极管及特性介绍
- wifi良好,手机可以连接网络,电脑连接不上网络,解决方法
- 心理实验应用计算机的优缺点,发展心理学研究方法发展的新趋势
- 学习通考试刷题(ocs网课助手)
- ro素质点模拟器_仙境传说RO:最具人气职业猎人成长攻略手册
- 华为分布式文件存储服务器配置,分布式存储服务器
- Discus 论坛 在 pc 电脑上 访问手机版 ( mobile ) 和 触屏版(touch)设置
- Python与人工神经网络(2)——使用神经网络识别手写图像
- (转)iOS6和Xcode4.5初体验-图多杀猫
- 变量——整型变量 浮点型变量 字符型变量
热门文章
- JLabel鼠标停在上面显示小手图标 点击跳转到相应网页
- C/C++——从ctime使用到随便测一样冒泡排序和堆排序的效率
- 【Latex】下标放在符号正下方
- 【今日CV 计算机视觉论文速览 第116期】Mon, 13 May 2019
- Kubernetes—StatefulSet部署有状态应用详解(二十四)
- 爬虫-请求图片并打开显示图片
- jquery-索引2019
- SELinux导致PHP连接MySQL异常Can't connect to MySQL server的解决方法
- Hive+LDAP+Sentry
- SpringBoot入门之上传文件