LeetCode 27 移除元素(C++)

方法:双指针

  • 首先分别定义两个指针 fast 和 slow 代表数组元素的下标,两指针起始位置相同;
  • 遍历数组,找到数组中与目标值 val 相等的值;
  • 当 fast 对应元素等于目标值 val 时,执行: fast++, slow不动,继续进行判断;
  • 当 fast 对应元素不等于目标值 val 时,将 fast 的对应值赋给 slow ,再将 slow与 fast 同时自加,再继续比较

  •  最后, fast 访问越界,即超出数组长度时,遍历结束,返回 slow 即可。

代码:

class Solution {
public:
    int removeElement(vector& nums, int val) {
       /*int n=0;
       for(int num:nums){
           if(num!=val){
               nums[n]=num;
               n++;
           }
       }
       return n;*/
       //快慢指针
       if(nums.size()==0)return 0;
       int fast=0;
       int slow=0;
       while(fast


 

你可能感兴趣的:(leetcode,算法,数据结构)