题目描述:

意思是将所有0移到最后的同时其余非0元素位置仍然不变
如 1 2 0 5 2 0 经过移动零后变为 1 2 5 2 0 0
思路:使用双指针的思路来写
fast:从左往右遍历数组
slow:非零元素最后的一个位置
将数组分为3个区间
0,slow\]为处理好的非0数据,slow永远指向最后一个非0数据 \[slow+1,fast\]处理好的为0的数据 \[fast+t,arr.length-1\]为待处理的数据  做法: 1.fast遇到0元素:fast++ 2.fast遇到非0元素:slow++,然后交换数据,最后fast++ ```java public void moveZeroes(int[] nums) { int fast = 0; int slow = -1; for(fast = 0; fast < nums.length; fast++){ if(nums[fast] != 0){ slow++; // 交换数据 int tmp = nums[slow]; nums[slow] = nums[fast]; nums[fast] = tmp; } } } ```