题目
思路
- 经典
store_index
类型题目,取法“快速排序”中将元素分到左右两边的操作。 store_index
指针放在原地待命,i
指针逐个往后扫,遇到合适的就与store_index
位置上的交换,同时store_index += 1
- 此题揭示了这种做法的一个重要性质:可以保证符合条件的元素保持原来顺序不变。
代码
class Solution {
public:
void moveZeroes(vector<int>& nums) {
int n = nums.size(), store_index = 0;
// 不是0的请往前面坐
for (int i = 0; i < n; ++i) {
if (nums[i] != 0) {
swap(nums[i], nums[store_index]);
store_index++;
}
}
}
};