题目
https://leetcode-cn.com/problems/move-zeroes/
分析
设置两个指针p0和p1。
如果[p0]=0且[p1]!=0,交换[p0],p[1],然后p0++,p1++;
如果[p0]=0且[p1]=0,为了找到不为0的数,p1++;
如果[p0]!=0,说明当前位置不是0,不需要调整,p0++,p1++;
代码
class Solution {
public void moveZeroes(int[] nums) {
int p0=0;
int p1=0;
while(p0<=p1&&p1<nums.length){
if(nums[p0]==0){
if(nums[p1]!=0){
nums[p0]=nums[p1];
nums[p1]=0;
p0++;
p1++;
}
else{
p1++;
}
}
else{
p0++;
p1++;
}
}
}
}
复杂度
时间复杂度O(N)
空间复杂度O(1)