双指针Remove Element和Remove Duplicates from Sorted Array

    xiaoxiao2021-03-25  72

    双指针是一种思想,这里的指针不要单纯理解为*...只是一种定位的意思....

    双指针可以是快慢指针,比如这两个,也可以是分别在前后的,恩,这种也还没遇到.....

    这里的两道题都是快慢的指针,比如Remove Duplicates from Sorted Array,去掉重复的元素,一个用来遍历,就是走的快的,还有一个是指向当前的更新的位置,如果快指针是新元素,慢指针就更新然后往前移一个,如果快指针重了,那快指针就接着走,慢指针不动。

    Remove Duplicates from Sorted Array:

    [cpp]  view plain  copy class Solution {   public:       int removeDuplicates(vector<int>& nums) {           int n=nums.size();           if(n<=1)           {               return n;           }           int id=1;           for(int i=1;i<n;i++)           {               if(nums[i]!=nums[i-1])               {                   nums[id]=nums[i];                   id++;               }                         }           return id;       }   };  

    remove element:

    [cpp]  view plain  copy   class Solution {   public:       int removeElement(vector<int>& nums, int val) {           int id=0;           int n=nums.size();                    for(int i=0;i<n;i++)           {               if(nums[i]!=val)               {                   nums[id++]=nums[i];               }           }           return id;                  }   };  
    转载请注明原文地址: https://ju.6miu.com/read-41049.html

    最新回复(0)