双指针
解法思路:,设计cur和dest两个指针。使用cur扫描整个数组,将数组划分为三个区域,[0,dest]为非零区,[dest+1,cur]为零区,[cur,n-1]为待处理区。

从第一次判断处理或不处理到最后完成0与非0值的分区都满足解法思路。
代码展示:
java
public void moveZeroes(int[] nums){
int cur = 0;
int dest = -1;
while(cur<nums.length){
if(nums[cur]!=0){
int tmp = nums[dest+1];
nums[dest+1]=nums[cur];
nums[cur]=tmp;
cur++;
dest++;
}else{
cur++;
}
}
}