s1-数组-6

71 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第6天,点击查看活动详情

s1-数组-6

移除元素复习

力扣27

#1.上原题

image-20220612170840113

#2.思路简析

双指针法(快慢指针法): 通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。

定义快慢指针

  • 快指针:寻找新数组的元素 ,新数组就是不含有目标元素的数组
  • 慢指针:指向更新 新数组下标的位置

很多同学这道题目做的很懵,就是不理解 快慢指针究竟都是什么含义,所以一定要明确含义,后面的思路就更容易理解了。

#3.上题解

 class Solution {
 public:
     int removeElement(vector<int>& nums, int val) {
         int slowIndex = 0;
         for (int fastIndex = 0; fastIndex < nums.size(); fastIndex++) {
             if (val != nums[fastIndex]) {
                 nums[slowIndex++] = nums[fastIndex];
             }
         }
         return slowIndex;
     }
 };

这个双指针的思路还是比较好理解的