首页 > 编程语言 >10.8算法

10.8算法

时间:2023-10-08 10:57:29浏览次数:33  
标签:index -- 10.8 算法 index2 new nums1 nums2

 

合并两个有序数组
给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。

请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。

注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。

 

示例 1:

输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3
输出:[1,2,2,3,5,6]
解释:需要合并 [1,2,3] 和 [2,5,6] 。
合并结果是 [1,2,2,3,5,6] ,其中斜体加粗标注的为 nums1 中的元素。
示例 2:

输入:nums1 = [1], m = 1, nums2 = [], n = 0
输出:[1]
解释:需要合并 [1] 和 [] 。
合并结果是 [1] 。
示例 3:

输入:nums1 = [0], m = 0, nums2 = [1], n = 1
输出:[1]
解释:需要合并的数组是 [] 和 [1] 。
合并结果是 [1] 。
注意,因为 m = 0 ,所以 nums1 中没有元素。nums1 中仅存的 0 仅仅是为了确保合并结果可以顺利存放到 nums1 中。
 

提示:

nums1.length == m + n
nums2.length == n
0 <= m, n <= 200
1 <= m + n <= 200
-109 <= nums1[i], nums2[j] <= 109
 

进阶:你可以设计实现一个时间复杂度为 O(m + n) 的算法解决此问题吗?

 

class Solution { public:     void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {     int index1=m-1,index2 = n-1,new_index=nums1.size()-1;     while(index1 >=0 && index2 >=0){         if(nums1[index1]>=nums2[index2]){             nums1[new_index] = nums1[index1];             new_index--;             index1--;         }         else{             nums1[new_index] = nums2[index2];             index2--;             new_index--;         }     }     while(index2 >= 0){         nums1[new_index] = nums2[index2];         new_index--;         index2--;     }     while(index1 >= 0){         nums1[new_index] = nums1[index1];         new_index--;         index1--;     }     } };   关键:可利用多余空间存储,使用归并排序,也可以倒着排序,不需要多余的空间

标签:index,--,10.8,算法,index2,new,nums1,nums2
From: https://www.cnblogs.com/minipython-wldx/p/17748344.html

相关文章

  • 使用最短路径算法检查项目循环依赖
    最近项目组让我做一个自研的小工具,用来检查代码里的循环依赖,这里做下记录。思路由于工作是网络算路的,第一个想法就是通过路径计算来实现这个功能:把项目里test,resource等文件夹排除,剩下的每一个java文件可以算是对应一个类,把每个类看做是网络/路网里的节点,把类与类之间的依赖关......
  • Mysql 分布式序列算法
    接上文Mysql分库分表1.分布式序列简介在分布式系统下,怎么保证ID的生成满足以上需求?ShardingJDBC支持以上两种算法自动生成ID。这里,使用ShardingJDBC让主键ID以雪花算法进行生成,首先配置数据库,因为默认的注解id是int类型,装不下64位,需要进行修改:#在本地和远端服务器数据......
  • 代码随想录 | 回溯算法 ● 理论基础 ● 77. 组合
    理论基础组合问题:N个数里面按一定规则找出k个数的集合(不强调顺序)切割问题:一个字符串按一定规则,有几种切割方式子集问题:一个N个数的集合里,有多少符合条件的子集排列问题:N个数按一定规则全排列,有几种排列方式(强调顺序)棋盘问题:N皇后,解数独等回溯法模板回溯函数模板返回值以及参数返回......
  • 一周总结 10.2~10.8
    考试痛斥旅行社圆。考了几场试。场均挂分\(\ge150\),赢!具体可以见联考经验与总结做题学习了一些没有用的数学知识。学习了一些可能有用的数学知识。具体见“概率学习”和“斯特林近似证明”、“具体数学组合数习题选做”。做题\(\le15\),ds能不能似一似......
  • 算法设计 - Lecture 5
     ......
  • 【JAVA】算法
    start 1.SHA-256算法(单向、验证完整性/一致性,暂时安全)1importjava.nio.charset.StandardCharsets;2importjava.security.MessageDigest;3importjava.security.NoSuchAlgorithmException;45publicclassSHA256Example{67publicstaticStringhas......
  • Lnton羚通算法算力云平台视频监控分析安全帽穿戴识别 安全帽识别预警系统
    Lnton羚通的算法算力云平台有以下显著特点:高性能、高可靠性、高可扩展性和低成本。用户可以通过该云平台获取高效、强大的算法计算服务,快速而灵活地运行各种复杂的计算模型和算法。该平台广泛涵盖机器学习、人工智能、大数据分析和图像识别等领域。此外,云平台还提供丰富的算法库和......
  • 算法:打印斐波那契数列的前30项(JS)
    打印斐波那契数列的前30项提示:斐波那契数列的前两项是1,其他项是之前两项之和1functionfibonacciIterative(n){2if(n<=0){//如果输入的n小于等于0,表示输入错误,返回错误提示3return"输入错误,请输入正整数";4}5leta=1;//初始化......
  • 算法:九九乘法表(JS)
    九九乘法表1functioncreateMultiplicationTable(){2lettable='';//创建一个空字符串用于存储乘法表3for(leti=1;i<=9;i++){//外层循环控制行数,从1到94for(letj=1;j<=i;j++){//内层循环控制每行的列数,从1到当前行数i......
  • 时序预测的深度学习算法全面盘点
    时序预测的深度学习算法全面盘点https://blog.csdn.net/qq_34160248/article/details/131349551  https://it.sohu.com/a/690057464_121124360https://zhuanlan.zhihu.com/p/393706324https://zhuanlan.zhihu.com/p/478751503https://zhuanlan.zhihu.com/p/466656425ht......