题目
https://leetcode.cn/problems/move-zeroes/description/?envType=study-plan-v2&envId=leetcode-75
思路
使用下标i
作为慢指针,表示当前放不是0的数字的位置,下标j
作为快指针,表示遍历数组中的数字,依次处理,如果不是nums[j]不是0,就应该放到当前的nums[i]的位置,然后i++,注意处理一直没有0的情况
代码
class Solution {
public:
void moveZeroes(vector<int>& nums) {
int i = 0;
int n = nums.size();
for (int j = 0; j < n; ++j) {
if (nums[j] != 0) {
nums[i++] = nums[j];
if (i - 1 != j) {
nums[j] = 0;
}
}
}
}
};