题目链接:
题目描述:
思路:
双指针,left指向第一个0,right指向第一个非零的数,然后交换
所以,如果right不为0,两个指针一起移动,为0,只要right移动,此时left指向0,当right不为0时,进行交换
注意 先交换后移动,避免指针异常
实现代码:
class Solution {
public void moveZeroes(int[] nums) {
int left = 0, right = 0;
while(right < nums.length){
if(nums[right] != 0){
if(left != right){//避免无用的交换
swap(nums,left,right);
}
left++;
right++;
}else{
right++;
}
}
}
public void swap(int[] nums, int left ,int right){
int tmp = nums[left];
nums[left] = nums[right];
nums[right] = tmp;
}
}