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; } };