首页 > 代码库 > leetcode第一刷_Remove Duplicates from Sorted Array II

leetcode第一刷_Remove Duplicates from Sorted Array II

水题。

我之前说过包含至多几个至少几个的问题都比较难,这个题可是让我大脸了。至多可以重复一次,那就重复次数多于两次再计算重复,否则的话像普通的数据一样直接按照重复次数前移就可以了嘛。不过说归说,这种inspace的思想还是有些用处的,数组这种实现方式致命的缺点就是删除或者添加中间的元素代价太大,因为不好把握数据的最终位置。这个题是一种情况,合并两个排序好的数组也是一个例子。

class Solution {
public:
    int removeDuplicates(int A[], int n) {
        int past = A[0], due = 0, tpdue = 1;
        for(int i=1;i<n;i++){
            if(A[i] == past){
                tpdue++;
                if(tpdue>2){
                    due++;
                }else{
                    A[i-due] = A[i];
                }
            }else{
                past = A[i];
                A[i-due] = A[i];
                tpdue = 1;
            }
        }
        return n-due;
    }
};