博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
88 -合并排序数组
阅读量:5167 次
发布时间:2019-06-13

本文共 1075 字,大约阅读时间需要 3 分钟。

给定两个排序的整数数组nums1nums2,将nums2合并为nums1作为一个排序的数组。

注意:

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

例:

输入:nums1 = [1,2,3,0,0,0],m = 3nums2 = [2,5,6],n = 3
输出:  [1,2,2,3,5,6]
 
解法1:将nums2数组中的数据加在在nums1数据的后边。使用冒泡排序重新排序public  void merge(int[] nums1, int m, int[] nums2, int n) {            int i=m,j=0;            while (i
nums1[p+1]) { int temp=nums1[p]; nums1[p]=nums1[p+1]; nums1[p+1]=temp; } } } }解法二:nums1[3,5,7,9,0,0,0];nums2[1,4,8];从两个数组的已有数据最末端(nums1数字9和nums数字8)开始对比,将大的数置于nums1整个数组的最末端。然后将大的数所在的数组的索引-1.当出现nums1数据的最首端(最小值)大于nums2的最大值时将nums2数组所有值放于nums1数组最前对应位置。 public static void merge(int[] nums1, int m, int[] nums2, int n) { int i = m - 1, j = n - 1, k = m + n - 1; while(i >= 0 && j >= 0) { nums1[k--] = nums1[i] > nums2[j] ? nums1[i--] : nums2[j--]; } while(j >= 0) { nums1[k--] = nums2[j--]; } }

  

 

转载于:https://www.cnblogs.com/dloading/p/10701685.html

你可能感兴趣的文章
UVa 111 History Grading (最长公共子序列)
查看>>
linux基本命令
查看>>
Oracle插入日期格式出现 ORA-01843: not a valid month的解决办法
查看>>
HashSet的实现原理
查看>>
Java HashMap 分析之四:查找和内存使用
查看>>
《与熊共舞》——软件项目风险管理
查看>>
Linux system函数详解
查看>>
spring-boot启动信息中non-fatal error
查看>>
ubuntu14.04 Hadoop单机开发环境搭建MapReduce项目
查看>>
论文笔记:Deformable ConvNets v2: More Deformable, Better Results
查看>>
开通博客
查看>>
day03_04 文件后缀及系统环境变量
查看>>
JAVASCRIPT和JSP计算闰年
查看>>
OracleDBConsole启动不了
查看>>
PhoneGap工具Cloud9 IDE介绍以及使用方法
查看>>
HTML5 File 对象
查看>>
顺序表和链式表总结
查看>>
vc6.0中的dsp,dsw,ncb,opt,clw,plg,aps等文件的简单说明
查看>>
深入浅出SharePoint2013——安装SharePoint2013
查看>>
回校前的流水账
查看>>