26. Remove Duplicates from Sorted Array

思路:
直接双指针即可,也称快慢指针吧。
慢指针用来定位应该被替换的元素,也就是数组前几个元素,快指针用于发现和慢指针所指的元素不同的元素,当发现后就替换掉慢指针所指的元素即可。
代码:

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        int slow=0,n=nums.size();
        if(n==0) return 0;
        int res=1;
        for(int i=0;i<n;++i){
            if(nums[i]==nums[slow]) continue;
            res++;
            slow=i;
            nums[res-1]=nums[i];
        }
        return res;
    }
};

优化:

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        int slow=1,n=nums.size();
        if(n==0) return 0;
        for(int fast=1;fast<n;fast++){
            if(nums[fast]!=nums[fast-1]){
                nums[slow++]=nums[fast];
            }
        }
        return slow;
    }
};
``
posted @ 2021-04-18 18:12  Mrsdwang  阅读(31)  评论(0编辑  收藏  举报