1. 080

remove-duplicates-from-sorted-array-ii


2.算法

  • O(n)

3. 代码

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        int n=nums.size();
        if(n<=2)
            return n;
        int ret=0;
        for(int i=0;i<n-2;i++)
            if(nums[i]!=nums[i+1]||nums[i]!=nums[i+2])
                nums[ret++]=nums[i];

        nums[ret++]=nums[n-2];
        nums[ret++]=nums[n-1];
        return ret;
    }
};

  • count :记录还可以重复几次,初始化为1

int removeDuplication(int A[],int n){
    if(n<=2)  return n;
    int pre=0,cur=1,count=1;
    while(cur<n){
        if(A[pre]==A[cur]&&count==0)  ++cur;
        else{
            if (A[pre]==A[cur] )  --count;
            else count=1;
            A[++pre]=A[cur++];
        }
    }
    return pre+1;

}

results matching ""

    No results matching ""