[Leetcode 30] 80 Remove Duplicates From Sorted Array II
Probelm:
Follow up for "Remove Duplicates":
What if duplicates are allowed at 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]
.
Analysis:
One pass algorithm, with the help of an extra counter which keeps recoreds of the number of current element's occurance.
Pay special attention that the returned value is the length of the array which is 1 greater than the nn's last value
Code:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 class Solution { 2 public: 3 int removeDuplicates(int A[], int n) { 4 // Start typing your C/C++ solution below 5 // DO NOT write int main() function 6 if (n == 0) return n; 7 8 int nn = 0, cnt = 1; 9 for (int i=1; i<n; i++) { 10 if (A[i] != A[nn]) { 11 A[++nn] = A[i]; 12 cnt = 1; 13 } else if (A[i] == A[nn] && cnt==1) { 14 A[++nn] = A[i]; 15 cnt = 2; 16 } 17 } 18 19 return nn+1; 20 } 21 };
Attention: