题目
思路
- 双指针
- 一个指向为0的 一个指向不为0的 交换即可
代码
public void moveZeroes(int[] nums){
if(nums.length==1) return;
//双指针 start指向为0的数 end指向不为0的数 两者交换即可
int start = 0;
int end = 0;
while (start<nums.length){
//start往后移 找到nums数组里为0的数 找到最后一个就停下来
while(start<nums.length && nums[start]!=0) start++;
while(end<nums.length && nums[end]==0) end++;
if(end>=nums.length || start>=nums.length) break;
if(start<end) swap(nums,start,end);
end++;
}
}
public void swap(int[]nums,int index1,int index2){
int temp = nums[index1];
nums[index1] = nums[index2];
nums[index2] = temp;
}