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

网站建设新闻分享代理网站地址

网站建设新闻分享,代理网站地址,爱站网为什么不能用了,icann域名注册商题目: 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0]示例 2: 输入:…

题目:

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

请注意 ,必须在不复制数组的情况下原地对数组进行操作。

示例 1:

输入: nums = [0,1,0,3,12]
输出: [1,3,12,0,0]

示例 2:

输入: nums = [0]
输出: [0]

提示:

  • 1 <= nums.length <= 104
  • -231 <= nums[i] <= 231 - 1

解决:

解法1:

设置双指针i,j。i遍历,j指向非零元素。i遇到非零元素就把它挪到j所在位置,同时j后移一位。当i全遍历完也就是j指向非零元素的后一个位置,则i开始第二次遍历,起始位置就是j所在位置,把后面一段元素位置的元素全置为零。时间复杂度为O(n)。其实是i遍历了一遍,j近似也遍历了一遍。

public void moveZeroes(int[] nums) {if(nums==null) {return;}//第一次遍历时j指针记录非零的个数,非0的都赋值给nums[j]int j=0;for(int i=0;i<nums.length;i++){if(nums[i]!=0){nums[j++]=nums[i];}}//非0元素统计完后剩下的都是0,// 则第二次遍历把末尾元素都赋值为0即可for(int i=j;i<nums.length;i++){nums[i]=0;}}

解法2:

官方题解。设置双指针,但不是采取挪动方式,而是用交换的方式,左指针指向当前已经处理好的序列的尾部,右指针指向待处理序列的头部。右指针不断向右移动,每次右指针指向非零数,则将左右指针对应的数交换,同时左指针右移。则每次交换都是将左指针的零与右指针的非零数交换且非零数的相对位置未改变。

这样只用遍历一遍。但是这样的效率比挪动更低。

public void moveZeroes(int[] nums) {int n = nums.length, left = 0, right = 0;while (right < n) {if (nums[right] != 0) {swap(nums, left, right);left++;}right++;}}public void swap(int[] nums, int left, int right) {int temp = nums[left];nums[left] = nums[right];nums[right] = temp;
}

加油加油^_^

http://www.yayakq.cn/news/334203/

相关文章:

  • 建设部房地产网站徐州建设厅网站
  • 一个专做窗帘的网站纷享销客crm官网
  • 做网站去哪里找广告主这几年做那些网站致富
  • 用易语言可以做网站吗濮阳做网站星月网络
  • 博客自助建站六灶网站建设
  • 美工网站杭州有哪些网站建设
  • 如何给网站加二级域名网站建设中的色彩搭配
  • 网站开发用什么软件免费网站 推广网站
  • 百度网站优化工具团购网站 模板
  • 网站建站网站91955网站建设 2018
  • 绍兴网站建设方案托管山东网站建设app
  • 有些网站域名解析错误项目符号在哪里设置
  • 网站设计大概多少钱中国制造网入驻费用
  • 公众号里的网站怎么做的台州网页设计模板
  • 营销型网站 案例眉山专业网吧设计公司
  • 免费英文 网站模板学士学位网站重置密码怎么做
  • 做网投网站好wordpress父网页
  • 百度贴吧网站开发需求分析wordpress素材下载
  • 有一个网站怎么做cpc如何做聚合类网站
  • 如何创造免费网站微网站开发外包
  • 东莞制作网站公司哪家好wordpress 近期文章 代码
  • 关于网站规划建设方案书商城网站管理系统
  • python如何做简单的网站做网站保定
  • 商业网站 模板免费制作网站平台哪个好
  • 一般做门户网站多少钱wordpress随机发布文章
  • 广西新站seo寿宁县建设局网站
  • 慈溪电商网站建设公司房山 网站建设
  • 西安做网站公司工资鄂州市 网站建设
  • 营销型机械网站Lms wordpress功能
  • 惠州高端模板建站网站制作软件工程师