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]
.
class Solution { public: int removeDuplicates(int A[], int n) { if(n<=2)return n; int len=1; int curr=A[0]; map<int,int> Amap; Amap[curr]=1; for(int i=1;i<n;i++) { if(A[i]==curr) { Amap[curr]++; if(Amap[curr]<=2) { A[len]=curr; len++; } } else { curr=A[i]; Amap[curr]=1; A[len]=curr; len++; } } return len; } };