双指针
283. 移动零 - 力扣(LeetCode)
解法思路:,设计cur和dest两个指针。使用cur扫描整个数组,将数组划分为三个区域,[0,dest]为非零区,[dest+1,cur]为零区,[cur,n-1]为待处理区。
从第一次判断处理或不处理到最后完成0与非0值的分区都满足解法思路。
代码展示:
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++; } } }