Follow up for "Remove duplicates":
What if duplicates is allowed at the most twice?
For example,
Given sorted Array A = [1,1,1,2,2,3]
,
Your function should return length = 5
, and A is now [1,1,2,2,3]
.
This question is the continuation of the remove duplicates from the Sorted array in the ordered arrays, where the maximum number of repetitions allowed is two, then we need to record a variable count to allow a few repetitions, count initialized to 1, If there is a repetition, count decrements by 1, then the next occurrence repeats, the quick pointer is further, if this is not a duplicate, then count recovers 1, because the entire array is ordered, so once there are no duplicates, it must be larger than this number, and there will be no duplicates after this number. Clear up the above ideas, the code is very good to write:
classSolution { Public: intRemoveDuplicates (intA[],intN) {if(N <=2)returnN; intPre =0, cur =1, Count =1; while(Cur <N) {if(A[pre] = = A[cur] && count = =0) ++cur; Else { if(A[pre] = = A[cur])--count; ElseCount =1; a[++pre] = a[cur++]; } } returnPre +1; }};
[Leetcode] Remove duplicates from Sorted Array II to remove duplicates in an ordered array