package leecode;
/**
* 283. 移动零
* 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序
*
* @author Tang
* @date 2021/10/22
*/
public class MoveZeroes {
/**
* 利用双指针
* 快指针顺序遍历数组
* 每次遍历到的元素判断是否为0,如果不是0 则慢指针++,
* 如果是0 慢指针元素等于快指针元素(此时慢指针的元素指的是0元素,把快指针的正常元素换过来)
*
* @param nums
*/
public void moveZeroes(int[] nums) {
int slow = 0;
int fast = 0;
while(fast < nums.length) {
if(nums[fast] == 0) {
fast++;
continue;
}
int temp = nums[slow];
nums[slow] = nums[fast];
nums[fast] = temp;
fast++;
slow++;
}
}
public static void main(String[] args) {
int[] nums = {1};
new MoveZeroes().moveZeroes(nums);
}
}