解题思路:
只需做一次遍历,用一个数 count 和累加已出现的 0 的个数,当 nums[i]不等于0,且count 大于0时,将 nums[i] 向前移动count 位 即可。
最后,将数组的最后 count 个数置为0即可。
class Solution {
public:
void moveZeroes(vector<int>& nums) {
int count = 0; //count 用于记录当前已出现的 0 的个数
for(int i = 0; i < nums.size(); i++){
if(nums[i] == 0) count++;
else{
if(count > 0){
nums[i - count] = nums[i];
}
}
}
//将最后面的count 个数 置为 0
if(count > 0){
for(int i = 0; i < count; i++){
nums[nums.size() - 1 - i] = 0;
}
}
}
};