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

中山企业网站建设公司微博分享的网站怎么做

中山企业网站建设公司,微博分享的网站怎么做,刚刚发布了天津的最新消息,永灿网站建设公司给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0] 示例 2: 输入: nums [0] 输出: […

给定一个数组 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

进阶:你能尽量减少完成的操作次数吗?


知识点:
数组、双指针


解:
采用双指针实现,初始时,左指针指向第一个元素,右指针指向第二个元素。
这里实际上已经考虑了一个元素的情况:只有一个元素时,不管是0还是非零元素,实际上不用动这个数组的内容,因此只考虑两个及以上元素数量的情况。
左指针,实际上指向的是0;右指针,实际上指向的是左指针指向的0后面第一个非零元素。
如何判断遍历结束了?通过判断右指针不等于数组长度,即可。原因在后面进行说明

这里对于指针指向的元素,分为3种情况:
case1:左指针指向0,右指针指向非零元素
这种情况下,需要交换左右指针指向的元素,实现非零元素向前移动、0向后移动。由于题目要求的是保证非零元素的相对顺序不变,而不同0的顺序实际上没区别,因此这种交换元素的方式是可取的。交换后,左指针就指向了非零元素,右指针指向了0,那么就来到了case3
case2:双指针均指向0
这种情况表示存在多个连续的0,那么交换0是没有实际意义的,为了减少交换次数,我们将右指针后移,直到后面的某次遍历时,右指针指向了非零元素,那么就来到了case1
case3:左指针指向非零元素
这种情况正是交换完0和非零元素后的结果,此时,左指针原来指向的0已经完成移动,标明左指针的使命已经完成,因此左指针后移。而双指针同时指向同一个元素,并没什么用,因此我们直接将右指针也后移。所以就有双指针同时后移

这里,以测试用例1进行说明,给出while循环的结束条件是如何确定的。
测试用例1推导过程
蓝色圈圈就说明了为什么右指针等于数组长度时,表明循环结束。

class Solution {public void moveZeroes(int[] nums) {//双指针分别指向第一个、第二个元素int pi = 0;int pj = 1;//数组只有一个元素则不处理(处理后数组不会变)if (nums.length > 1) {while (pj != nums.length) {if (nums[pi] == 0 && nums[pj] != 0) {//左指针指向0,右指针指向非零元素,直接交换双指针所指向的两个元素int tmp = nums[pi];nums[pi] = nums[pj];nums[pj] = tmp;} else if (nums[pi] == 0 && nums[pj] == 0) {//双指针均指向0,则更新右指针,直至遇到非零元素pj += 1;} else if (nums[pi] != 0) {//已进行元素交换,更新双指针pi += 1;pj += 1;}}}}
}

文章转载自:

http://WFjaFueU.jtfcd.cn
http://M9meW6NG.jtfcd.cn
http://WyU5vI0q.jtfcd.cn
http://P2GGjpVa.jtfcd.cn
http://kO4oB9xE.jtfcd.cn
http://lXcyt0Zr.jtfcd.cn
http://BESuXzfP.jtfcd.cn
http://WZYcUyWt.jtfcd.cn
http://FcqsDWdv.jtfcd.cn
http://Rg6bbXxM.jtfcd.cn
http://ynhn74d9.jtfcd.cn
http://mWzaiw1s.jtfcd.cn
http://3I3PO70W.jtfcd.cn
http://r1hRj2BB.jtfcd.cn
http://eHN6wlzp.jtfcd.cn
http://W7xjv04B.jtfcd.cn
http://Y1UpdJQF.jtfcd.cn
http://4BH6K91o.jtfcd.cn
http://BTNZsPeM.jtfcd.cn
http://Gte6Of3Y.jtfcd.cn
http://LnDKLUAo.jtfcd.cn
http://pIyZ6v4g.jtfcd.cn
http://w4ravVfw.jtfcd.cn
http://FEmLhhpa.jtfcd.cn
http://C2piRJnT.jtfcd.cn
http://2Z7skqyO.jtfcd.cn
http://7FQXvWt6.jtfcd.cn
http://Rwee9JtW.jtfcd.cn
http://J4JQU1Mf.jtfcd.cn
http://Nk6yoXvx.jtfcd.cn
http://www.dtcms.com/wzjs/713170.html

相关文章:

  • 网站宣传的好处和君咨询公司
  • 北京怎样在社保网站上做减员做学校和企业对接的网站
  • 手机网站织梦模板举报的网站是国外的域名和空间
  • 网站特效 素材网站维护费用一年多少
  • 哈尔滨百度网站快速优化自己如何申请域名
  • 温州的网站建设公司网站内容建设与管理
  • 扬州网站建设哪家好江苏网站建站系统哪家好
  • 建设网站企业桂林北站到阳朔
  • 晚上必看的正能量网站排名优化公司
  • 搭建网站的主要风险google 网站优化工具
  • 重庆建网站一般多少钱网站建设术语名词
  • 线上推广的意义在线看seo网站
  • 网站建设从零开始杭州制造业企业做网站
  • 自助建站帮助网长沙专业网站设计公司
  • 建网站方案电脑软件开发工具
  • 北京做网站哪家好做网站要用什么服务器吗
  • 重庆企业免费建站房地产市场分析及前景
  • 网站建设论文总结做网站业务的怎么找资源
  • photoshop网页版在线使用惠州seo优化服务
  • 好玩的网页游戏排行榜电脑浙江网站建设方案优化
  • 网站建设宣传广告语郑州网站建设工作室
  • 知名网站规划软件开发 报价单
  • 12306铁路网站开发语言海口 网站制作公司
  • 青岛做物流网站pantone色卡官网入口
  • php房产中介网站源码做网站泰安
  • 江苏工程建设信息官方网站高端集团官方网站建设公司
  • 广东购物网站建设做一个网站要多少钱
  • 视频logo免费生成网站如何进入网站后台管理系统
  • 做号网站重庆长寿网站设计公司
  • 网页设计旅游网站老鹰画室网站哪家做的