题目

image.png

思路

  • 经典store_index类型题目,取法“快速排序”中将元素分到左右两边的操作。
  • store_index指针放在原地待命,i 指针逐个往后扫,遇到合适的就与store_index位置上的交换,同时store_index += 1
  • 此题揭示了这种做法的一个重要性质:可以保证符合条件的元素保持原来顺序不变。

    代码

  1. class Solution {
  2. public:
  3. void moveZeroes(vector<int>& nums) {
  4. int n = nums.size(), store_index = 0;
  5. // 不是0的请往前面坐
  6. for (int i = 0; i < n; ++i) {
  7. if (nums[i] != 0) {
  8. swap(nums[i], nums[store_index]);
  9. store_index++;
  10. }
  11. }
  12. }
  13. };