双指针

交换可以用函数 swap

虽然借助双指针的提示,想到了做法,但是其实我的脑内模拟还可以在书写代码方面上再优化

就像两数之和那样,都是 On,但我的就是稍微多一点,

其实这里也是一样,left 可以不一定非要找到 0,反正还是分析后发现他们也是正确的,但是我很难自发想到

或者有的人写的,不靠交换,靠覆盖补零

class Solution {
public:
    void moveZeroes(vector<int>& nums) {
        int i = 0, j = 0;
        while(i < nums.size()) {
            while(j < nums.size() && nums[j]!=0) j++;
            if (j >= nums.size()) break;
            while(i < nums.size() && (nums[i]==0 || i <= j)) i++;
            if (i >= nums.size()) break;
            int tmp = nums[i];
            nums[i] = nums[j];
            nums[j] = tmp;
        }
    }
};