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.
1 class Solution { 2 public: 3 int removeDuplicates(vector<int>& nums) { 4 5 int len = nums.size(); 6 if(len == 0){ 7 return 0; 8 } 9 int start = 0; 10 int num = 0; 11 for(int i = 1; i < len; i ++){ 12 if(nums[start] == nums[i]){ 13 num ++; 14 if(num < 2){ 15 nums[++start] = nums[i]; 16 } 17 }else{ 18 num = 0; 19 nums[++start] = nums[i]; 20 } 21 } 22 return start + 1; 23 } 24 };