移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
示例:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
说明:
必须在原数组上操作,不能拷贝额外的数组。
尽量减少操作次数。
解题思路
利用双指针,从头开始遍历,找到不为0的数字,依次置换
(上图补充 , 同时num[b]赋值为0)
依次遍历,最终就可以得到结果了.
逻辑可以梳理清楚了
c#代码
public void MoveZeroes(int[] nums){
int a = -1;
for (int i = 0; i < nums.Length; i++) {
if (nums[i] == 0)
{
if (a == -1)
{
a = i;
}
} else{
if (a != -1){
nums[a] = nums[i];
a++;
nums[i] = 0;
}
}
}
}
一起刷题呀~~ 欢迎一起交流
QQ群 :780697909以上都是都是引用的leetcode网站内容