题解
class Solution {
public:
void moveZeroes(vector<int>& nums) {
int n = nums.size();
int i = 0, j = 0;
while (j < n) {
if (nums[j] != 0) {
nums[i] = nums[j];
i++;
}
j++;
}
while (i < n)
nums[i++] = 0;
}
};
思路
这是一个简单题,但是运用了一点双指针、快慢指针的小技巧。
双指针

使用一个慢指针i和一个快指针j,j用来逐步+1遍历,如果遍历到的数是非0的,则把j位置的数字放到i位置,然后i向后移动一位,如果遍历到0,则i不动(意味着最后i的后方都是给0留下的空位)