题目

image.png

思路

  • 此题为store_index型双指针模板题。
  • store_index的做法取法“快速排序”中将数据归类到基准值两侧的操作。
  • 一根指针为store_index,放在起始位置待命,另外一根指针为i,顺序遍历整个数组,如果遇到了符合条件的值,那么执行两个操作。1.交换store_indexi位置的数据;2.store_index += 1

    代码

  1. class Solution {
  2. public:
  3. int removeElement(vector<int>& nums, int val) {
  4. // store index 双指针
  5. /* 方法1 */
  6. /*
  7. int n = nums.size();
  8. int store_index = n - 1;
  9. for (int i = n - 1; i >= 0; --i) {
  10. if (nums[i] == val) {
  11. swap(nums[i], nums[store_index]);
  12. store_index--;
  13. }
  14. }
  15. return store_index + 1;
  16. */
  17. /* 方法2 */
  18. int n = nums.size();
  19. int store_index = 0;
  20. for (int i = 0; i < n; ++i) {
  21. if (nums[i] != val) {
  22. swap(nums[i], nums[store_index]);
  23. store_index++;
  24. }
  25. }
  26. return store_index;
  27. }
  28. };