交换可以用函数 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;
}
}
};