OJ lintcode 删除排序数组中的重复数字 II

跟进“删除重复数字”:
如果可以允许出现两次重复将如何处理?

class Solution {
public:
    /**
     * @param A: a list of integers
     * @return : return an integer
     */
    int removeDuplicates(vector<int> &nums) {
        // write your code here
        if(nums.size()==0){
            return 0;
        }

        int k=0;
        int counts=0;
        for(int i=1;i<nums.size();i++){
            if(nums[i]!=nums[k]){
                //不同的话
                k++;
                nums[k]=nums[i];
                //每当写入新的元素的时候,重新计数
                counts=0;
            }
            else{
                //k和i 指向的元素 相同的话
                
                if(counts<1){
                    //当出现一次的时候,符合条件,然后就像上面一样,将这个元素写入
                    k++;
                    nums[k]=nums[i];
                    //每当写入新的元素的时候,重新计数
                    counts=0;
                }
                counts++;
            }
        }
        nums.resize(k+1);
        return k+1;
    }
};

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容