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

ui设计培训班怎么样seo综合排名优化

ui设计培训班怎么样,seo综合排名优化,住房建设厅网站,合肥企业网站营销电话题目: 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 注意:最终&…

题目:

给你两个按 非递减顺序 排列的整数数组 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

解决:

解法1:利用Arrays中的sort方法排序直接求解

public void merge(int[] nums1,int m,int[] nums2,int n) {for(int i=0;i<n;i++){nums1[m+i]=nums2[i];}Arrays.sort(nums1);}

快速排序,时间复杂度为O((m+n)log(m+n))。代码效率不是特别高。其最大的问题是,题目给的数组元素本来是有序的,但这样混起来之后用sort排序相当于又重新排序了一遍,即没有充分利用元素的有序性。


解法2:用双指针

每次从两个数组的头部各取出一个数比较,把比较小的结果复制到临时数组中,再把比较小数所在数组指针后移一位。把两个数组元素都复制到临时数组后,临时数组的结果就是排序以后的结果了。再把临时数组的元素复制到nums1。这样的话两个数组都只循环了一遍,时间复杂度为O(m+n)。空间复杂度也是O(m+n)。

public void merge(int[] nums1,int m,int[] nums2,int n) {int k=m+n;int[] temp=new int[k];for(int index=0,nums1Index=0,nums2Index=0;index<k;index++){if(nums1Index>=m) {//nums1数组已经取完,接下来完全取nums2数组的值temp[index]=nums2[nums2Index++];}else if(nums2Index>=n){temp[index]=nums1[nums1Index++];}else if(nums1[nums1Index]<nums2[nums2Index]){//nums1数组元素值小于nums2数组元素值,取nums1数组的值temp[index]=nums1[nums1Index++];}else{temp[index]=nums2[nums2Index++];}}for(int i=0;i<k;i++){nums1[i]=temp[i];}}

解法3:用双指针,倒序处理

把nums2的最后一个元素与nums1的有效的最后一个元素比较,把大的放在nums1的最后一个0的位置。再把刚才的指针往前移一位,再比较这样就用到nums1的空间了,不用引入临时数组。这样时间复杂度为O(m+n),空间复杂度为O(m)。

    public void merge(int[] nums1,int m,int[] nums2,int n) {int k=m+n;for(int index=k-1,nums1Index=m-1,nums2Index=n-1;index>=0;index--){if(nums1Index<0) {//nums1数组已经取完,接下来完全取nums2数组的值nums1[index]=nums2[nums2Index--];}else if(nums2Index<0){break;}else if(nums1[nums1Index]>nums2[nums2Index]){//nums1数组元素值大于nums2数组元素值,取nums1数组的值nums1[index]=nums1[nums1Index--];}else{nums1[index]=nums2[nums2Index--];}}}

加油加油^_^

http://www.mmbaike.com/news/49282.html

相关文章:

  • 安全的企业网站开发seo关键词排名优化教程
  • 网站建设 硬件seo零基础教学视频
  • 外包加工哪个网站最靠谱整合营销的概念
  • 利用高权重网站做关键词南京百度搜索优化
  • 广东网站建设人员芜湖seo
  • 网站后台管理图片水印怎么做临沂头条新闻今日头条
  • 如何再国外网站做折扣做营销型网站哪家好
  • 企业网站建设报价表建网站的详细步骤
  • 做高级电工题的网站我赢网提供的高水平网页设计师
  • 中国建设银行西平支行网站中国广告网
  • 网站排名seo站长网站
  • 如何给自己做的网站加上域名seo网站优化课程
  • 做杂志的网站有哪些内容在哪里可以找到网站
  • 上海比较好的设计院信阳seo推广
  • 成都微信小程序商城广州seo优化排名公司
  • 世界大学排名吴忠seo
  • 做网站优化哪家好怎么找网站
  • 网站建设与网站开发宁德市中医院
  • 今天头条新闻下载优化大师并安装
  • 网站 流量 不够用seo的五个步骤
  • 深圳网站设计十年乐云seo网络营销与直播电商专业就业前景
  • 加盟型网站建设网络公关公司联系方式
  • 做篮球网站用的背景图如何做推广和引流
  • 青岛城乡建设委员会网站官网优化什么意思
  • 7一12岁手工简单又漂亮seo网站排名优化软件是什么
  • 网站建设的英文翻译360地图下载最新版
  • 营销式网站制作守游网络推广平台
  • 定制网站和模板网站的区别制作网页设计公司
  • 专业的公司网站制作服务我想创建一个网络平台
  • 中山网站建设 760企业网站的域名是该企业的