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

101-删除排序数组中的重复数字 II

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

样例

标签

数组 两根指针 脸书

思路

参照上一篇博客lintcode-100-删除排序数组中的重复数字,只需加一个标志isSecond,用于表示某个数字是否出现了2次

code

class Solution {
public:
    /**
     * @param A: a list of integers
     * @return : return an integer
     */
    int removeDuplicates(vector<int> &nums) {
        // write your code here
        
        int size = nums.size(), i = 0, j = 1;
        bool isSecond = false;

        if(size <= 0) {
            return 0;
        }
        int  newSize = 1;
        while(j<size) {
            if(nums[i] == nums[j] && !isSecond){
                nums[i+1] = nums[j];
                i++;
                j++;
                newSize++;
                isSecond = true;
            }
            else if(nums[i] < nums[j]){
                nums[i+1] = nums[j];
                i++;
                j++;
                newSize++;
                isSecond = false;
            }
            else {
                j++;
            }
        }

        return newSize;
    }
};
原文地址:https://www.cnblogs.com/libaoquan/p/7157886.html