题目:283. 移动零
思路:双指针。i和j都是从左往右,i用来找0,j用来找非0,然后交换两个数。
class Solution {
public:
void moveZeroes(vector<int>& nums) {
int n=nums.size();
int i=0,j=0;
while(i<n){
if(nums[i]==0){
//j一定是找i右边的非0数。
if(j<i) j=i;
while(j<n&&nums[j]==0) j++;
if(j<n)swap(nums[i],nums[j]);
}
i++;
}
}
};