class Solution {
public:
void moveZeroes(vector<int>& nums) {
// if(nums.size()<=1){
// return;
// }
// //i->第一个是0,j->第一个不是0
// int sum = 0;
// for(int i = 0;i<nums.size();i++){
// if(nums[i]==0){
// sum++;
// }
// }
// int i = 0;
// int j = 0;
// while(sum != 0 && j<nums.size() &&i<nums.size()){
// if(nums[i] != 0||nums[j]==0){
// if(nums[i]!=0){
// i++;
// continue;
// }else{
// j++;
// continue;
// }
// }
// swap(nums[i],nums[j]);
// sum--;
// i++;
// j++;
// }
int fast = 0;
int slow = 0;
for(;fast<nums.size();fast++){
if(nums[fast]!=0){
nums[slow] = nums[fast];
slow++;
}
}
while(slow<nums.size()){
nums[slow] = 0;
slow++;
}
}
};
本来想着不是0和是0的交换,发现可能没换完,ij就到后面了,没办法判定后面还有没有非0的
双指针!!!!
两个非常独立,一个遍历,一个捡不是0的放在数组前面