[leetCode 解题报告]080. Letter Combinations of a Phone Number

Description:

Follow up for "Remove Duplicates":
What if duplicates are allowed at most twice?

For example,
Given sorted array nums = [1,1,1,2,2,3],

Your function should return length = 5, with the first five elements of nums being 1, 1, 2, 2 and 3. It doesn't matter what you leave beyond the new length. 


解题思路:题目意思是说重复的元素最多只能计数2次,再多出现就计数2次,然后返回整个数组的个数。类似026那道题。

代码一:

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


代码二:

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



猜你喜欢

转载自blog.csdn.net/caicaiatnbu/article/details/78198992
今日推荐