知识点概览

往期参考代码
class Solution {
public:
void moveZeroes(vector<int>& nums) {
for (int cur = 0, dest = -1; cur < nums.size(); cur++) {
if (nums[cur]) // 处理非零元素
swap(nums[cur], nums[++dest]); // 如果 dest 为 0,这里要给后置 ++
}
}
};
题目解析

关键约束
- 数组长度固定
- 复写零,其他元素往右退(会被挤出去)
- 就地操作,不能用遍历然后复制的方法
解题思路
异地操作分析
虽然题目要求就地操作,但异地操作理论可行且简单,可作为灵感来源。
什么是异地操作
所谓异地操作,就是创建一个新的数组来辅助复写零的操作。
拿题给示例来说:

我们创建一个与原数组等长的辅助数组来存放复写的元素。
逻辑
设置两个指针:
cur:用来遍历原数组







