LeetCode移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。void moveZeroes(int* nums, int numsSize){ int count = 0, length = numsSize-1; while (length >= 0) { if(nums[length] == 0) { count++;//计数 int temp = length; while (temp < numsSize-1) { nums[temp] = nums[temp+1]; temp++; } } length--; } while (count > 0) { nums[numsSize-count] = 0; count--; } }
官方答案:双指针法
思路及解法
使用双指针,左指针指向当前已经处理好的序列的尾部,右指针指向待处理序列的头部。
右指针不断向右移动,每次右指针指向非零数,则将左右指针对应的数交换,同时左指针右移。
注意到以下性质:
左指针左边均为非零数;
右指针左边直到左指针处均为零。
因此每次交换,都是将左指针的零与右指针的非零数交换,且非零数的相对顺序并未改变。void swap(int *a, int *b) { int t = *a; *a = *b, *b = t; } void moveZeroes(int *nums, int numsSize) { int left = 0, right = 0; while (right < numsSize) { if (nums[right]) { swap(nums + left, nums + right); left++; } right++; } }
C问题模拟与数据表示之构造基础数据问题求解要抽象化为数据处理,前提是要有合适的问题模拟与数据表示或事务的数字化,也就是构造合适的数据结构。与此同时,也可以将数据区分为动态的事务性数据和静态的基础数据(常用静态数组或
台积电张忠谋再次表态,暗含信息量不小众所周知,随着时代的不断发展,电子产品得到了更广泛的普及,芯片自然就成了香饽饽,也就是说,谁掌握了半导体芯片产业链谁就掌握了在未来科技博弈中的话语权。然而,老美擅自修改芯片规则,导
超市订单管理系统GitHubgithub。comhsowansomsSOMSSupermarketOrdersManagementSystem超市订单管理系统Day01使用MyBatisMyBat
重要性不亚于鸿蒙?外媒新消息传来,阿里,你果然不一般文C君科讯排版C君科讯头条号原创文章,禁止抄袭,违者必究重要性不亚于鸿蒙2019年在关键时刻华为成功推出了自主研发的鸿蒙操作系统,这套操作系统的问世彻底打破了我国在移动操作系统市场
小鹏P7被曝泊车时失控加速,回应故车主需要检查IT之家1月23日消息,据1818黄金眼等多个媒体报道称,杭州的蒋先生近日表示自己在使用小鹏P7的记忆泊车功能时遇到了车子突然加速的问题,也因此撞到了后面的消防栓阀门,导致尾门凹陷
好手机和差手机如何分辨?内行人提醒,看这3个点相信很多用户在买新手机以后,在使用体验方面很一般,并且想卖掉新入手的机型更换其他手机的想法。其实出现这样的情况可以认定是外行人,不太了解手机,只不过周围很多朋友在使用,或者是看品牌
git基础用法分支切换合并等克隆项目gitclonehttpsgitee。comjbztechgitbranchlearning。git添加单个文件到gitaddgitbranchmaster。txt,添加当
AISSAN4黑鹰风暴2纯属虚构微笑微笑微笑微笑微笑微笑前情回顾爱思与蒙面义警联手击败了黑武士,MAC黑鹰风暴计划进行到下一步,剿灭三合会爱思在分部基地爱思看着眼前的透明显示屏哈哈,这里不就有排面了?莱克
C关键字整理atomicinclude原子操作(atomic)互斥量的加锁一般是针对一个代码段,而原子操作针对的一般都是一个变量。原子变量既不可复制亦不可移动。(1)它表示在多个线程访问同一个
Css中Position定位详解简介Position属性确认元素的定位常用属性值static静态定位relative相对定位absolute绝对定位fixed浮动定位static是默认定位值,它的定位元素不受to
LeetCode环形链表已知一个链表的头结点head,判断链表中是否有环思路快慢指针。定义两个指针,一个指针每次只移动一步,另一个指针每次移动两步,如果是环形链表,两个指针肯定会相遇,那么该链表就是环形链