Click here to try this problem on Leetcode
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.
思路:这道题目是 26.Remove Duplicates from Sorted Array 的follow-up。不同之处在于,可以允许每个元素重复最多两次。所以,我们还是继续使用i和index这两个下标,只不过不同之处在于,i和index不再从0开始,而是都从2开始。然后每次判断是否满足nums[i] != nums[index - 2]
,如果满足,就把nums[i]
的值赋给nums[index]
。
需要注意:
1.如果nums.size() <= 2
,就直接返回nums.size()
;
2.最后返回值为index
即可。
代码如下:
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
if(nums.size() <= 2) return nums.size();
int index = 2;
for(int i = 2; i < nums.size(); ++i){
if(nums[i] != nums[index - 2])
nums[index++] = nums[i];
}
return index;
}
};