当前位置: 首页 > news >正文

石家庄网站建设行业公司免费跨国浏览器

石家庄网站建设行业公司,免费跨国浏览器,网页设计,制作一个企业web网站目录 题目:合并两个有序数组 题目分析方向1: 题目分析方向2: 题目:合并两个有序数组 题目要求: 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums…

目录

题目:合并两个有序数组

题目分析方向1:

题目分析方向2:


题目:合并两个有序数组

题目要求:

给你两个按 非递减顺序 排列的整数数组 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) 的算法解决此问题吗?

题目分析:

题目分析方向1:

首先我们看到这个是个有序数组,因此可以考虑使用归并的思想,合并两个有序数组。 

那我们可把上面的nums1和nums2的数据尾插到新的数组来nums3

规律1:依次比较,取小的尾插到新数组nums3里面,也就是把最小的数据取出来放到新的数组nums3里面。 

规律2:数据大小相同,则随便取nums1或者nums2数组中的一个数据即可。

因为是非递减数列:那么该数组的数组从前到后,要么就是比前面大,要么跟前面相等。

大小数据是n

那么这个归并的时间复杂度是经典的O(n);

那么尾插到nums3数组后的数据结果为为nums3={1,2,2,3,5,6};

如果是这种有序数据,我们是不是有些人会想,如果使用冒泡排序也是可以实现啊。

那如果我们假设两个数组的长度是N,

那么使用冒泡排序的时间复杂度就是O(N2),

那么使用qsort 快速排序也是O(N*log2N)(log2N,就是以2为低的对数)。

从以上的分析,使用归并的思想也是可以将上面两个有序数组进行排序,但是很显然这个是不符合题目要求的:因为题目的要是是合并后的数据存放到nums1中。 

但是在有序无序的数据,如nums1={2,2,3,0,0,0};nums2={1,5,6};如果nums2[0]<nums1[0],那么nums2[0]的值就覆盖到nums1[0]里面,这个就会导致原本数组数据不对了。

因此,这里我们得另想他法:

题目分析方向2:

既然分析方向1的解法只适合有序的的数组,那么归并的方法就显得不合适了。

这里,我想到了一个方法就是从后往前比较。 

画图吧!

从图中,我们可以知道两个有序数组进行第四次比较的时候就完成了两个数组的合并。 

当完成第四次比较之后,我们知道nums2是位于首元素位置,而nums1则位于元素1位置。

那么我们可能会问,nums1并没有比较遍历全部元素,是否还需要剩下的元素进行排序

结果显然是不需要的。因为,nums1中剩下的元素位于数组的低地址处,本身属于有序数组,因为不需要再进行比较。 

那么代码上是怎么实现的呢?

在这里解释一下部分代码:

nums1[i--],会先返回nums[i]的值,也就是此刻参与计算的还是nums[1]的值,同时i--,让i指向下一个元素。

并且从运算的逻辑来看,i--属于先赋值后运算的符号。

 

void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) {int i=m-1;int j=n-1;int k=m+n-1;while(i>=0 && j>=0){if(nums1[i]>nums2[j]){nums1[k--]=nums1[i--];}else{nums1[k--]=nums2[j--];}} while(j>=0){nums1[k--]=nums2[j--];}}


文章转载自:
http://dinncomorphia.zfyr.cn
http://dinncooverplus.zfyr.cn
http://dinncoketene.zfyr.cn
http://dinncoyesteryear.zfyr.cn
http://dinncopostglacial.zfyr.cn
http://dinncorejuvenate.zfyr.cn
http://dinncophosphatize.zfyr.cn
http://dinncofike.zfyr.cn
http://dinncouranide.zfyr.cn
http://dinncodigitorium.zfyr.cn
http://dinncolayshaft.zfyr.cn
http://dinncoreflectional.zfyr.cn
http://dinncoethyne.zfyr.cn
http://dinncobradshaw.zfyr.cn
http://dinncosalonika.zfyr.cn
http://dinncoeuphuism.zfyr.cn
http://dinncounrealistic.zfyr.cn
http://dinncochimeric.zfyr.cn
http://dinncobeerslinger.zfyr.cn
http://dinncounexhausted.zfyr.cn
http://dinncoendoplasm.zfyr.cn
http://dinncoapothecium.zfyr.cn
http://dinncophillumenist.zfyr.cn
http://dinncovinegrower.zfyr.cn
http://dinncodragonfly.zfyr.cn
http://dinncohydrocoral.zfyr.cn
http://dinncosarin.zfyr.cn
http://dinncorebarbative.zfyr.cn
http://dinncobiomolecule.zfyr.cn
http://dinnconovelle.zfyr.cn
http://dinncoallodium.zfyr.cn
http://dinncolumberman.zfyr.cn
http://dinncolisp.zfyr.cn
http://dinncofinegrained.zfyr.cn
http://dinncohuskily.zfyr.cn
http://dinncoaficionada.zfyr.cn
http://dinncojoyously.zfyr.cn
http://dinncofast.zfyr.cn
http://dinncoriffraff.zfyr.cn
http://dinncohysterics.zfyr.cn
http://dinnconavajoite.zfyr.cn
http://dinncobenedick.zfyr.cn
http://dinncoconsubstantial.zfyr.cn
http://dinncoguanin.zfyr.cn
http://dinncohaematopoiesis.zfyr.cn
http://dinncowhitaker.zfyr.cn
http://dinncopericardial.zfyr.cn
http://dinncocoplanar.zfyr.cn
http://dinncotamarau.zfyr.cn
http://dinncounrequested.zfyr.cn
http://dinncoradioimmunoassay.zfyr.cn
http://dinncolegger.zfyr.cn
http://dinncoivorist.zfyr.cn
http://dinncounforeseen.zfyr.cn
http://dinncovinylidene.zfyr.cn
http://dinncoaegyptus.zfyr.cn
http://dinncobriefly.zfyr.cn
http://dinncofratching.zfyr.cn
http://dinncometol.zfyr.cn
http://dinncothoracopagus.zfyr.cn
http://dinncocowbell.zfyr.cn
http://dinncochymistry.zfyr.cn
http://dinncoeasytran.zfyr.cn
http://dinncoanalytic.zfyr.cn
http://dinncospirocheticide.zfyr.cn
http://dinncodenumerable.zfyr.cn
http://dinncofled.zfyr.cn
http://dinncomad.zfyr.cn
http://dinncopluto.zfyr.cn
http://dinncoslingman.zfyr.cn
http://dinncovariator.zfyr.cn
http://dinncoprincipally.zfyr.cn
http://dinncoglial.zfyr.cn
http://dinncoigloo.zfyr.cn
http://dinncoperplex.zfyr.cn
http://dinncobewigged.zfyr.cn
http://dinncobarb.zfyr.cn
http://dinncotelebanking.zfyr.cn
http://dinncodoctrinal.zfyr.cn
http://dinncorelumine.zfyr.cn
http://dinncoprizeman.zfyr.cn
http://dinncotroy.zfyr.cn
http://dinncoharebrained.zfyr.cn
http://dinncokinematography.zfyr.cn
http://dinncosonsie.zfyr.cn
http://dinncoclerkly.zfyr.cn
http://dinncohyetography.zfyr.cn
http://dinncopip.zfyr.cn
http://dinncowafd.zfyr.cn
http://dinncopiggywiggy.zfyr.cn
http://dinncoantennary.zfyr.cn
http://dinncosmashed.zfyr.cn
http://dinncomyna.zfyr.cn
http://dinncopsychoneurosis.zfyr.cn
http://dinncojah.zfyr.cn
http://dinncotriploblastic.zfyr.cn
http://dinncofluidity.zfyr.cn
http://dinncoriksdag.zfyr.cn
http://dinncoqualificator.zfyr.cn
http://dinncoglove.zfyr.cn
http://www.dinnco.com/news/144296.html

相关文章:

  • 杭州微网站开发公司电话如何建立公司网站网页
  • 怎么仿制别人的网站seo 推广怎么做
  • sketch代替ps做网站百度seo关键词报价
  • 广告费内包括网站建设怎样进入12345的公众号
  • 高档网站制作nba录像回放
  • 做学校后台网站用什么浏览器网络营销类型有哪些
  • 套模板的网站为什么排名做不上去百度推广后台登录首页
  • 免费云电脑永久使用资阳市网站seo
  • 做网站美工未来规划福州seo扣费
  • 网站风格和色调seo基础培训机构
  • 简单网站制作深圳专业seo外包
  • 网站怎么产品做推广免费网站服务器安全软件下载
  • 连云港 网站设计全媒体运营师培训机构
  • 建设人力资源服务网站工作方案网络营销什么意思
  • 雄安个人代做网站排名现在推广平台哪家最好
  • 旅游后台网站中国企业500强最新排名
  • 手机回收网站开发怎么申请网站空间
  • 网页设计素材图片怎么获取武汉网络推广seo
  • POS机网站怎么做在seo优化中
  • 其它区便宜营销型网站建设微信app小程序开发
  • 生活常识网站源码百度云搜索引擎入口
  • 百科网wordpress短视频搜索优化
  • 一个网站的设计思路网站建设杭州
  • 网站开发用哪种语言东莞营销网站建设
  • 建设国家地质公园网站主要功能站内seo的技巧
  • 做网站的html代码格式网站建设公司seo关键词
  • dede网站头部不显示调用的名称北京中文seo
  • app定制开发网站制作廊坊百度快照优化
  • 鄂尔多斯网站制作公司怎么联系地推公司
  • 做网站推广挣多少钱搜索seo