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]
.
public class Solution {
public int removeDuplicates(int[] A) {
if (A.length < 2) return A.length;
int lo = 0;
for (int hi = 1; hi < A.length; hi++) {
if (A[hi] != A[lo] || (lo == 0 ||A[lo] != A[lo-1])) {
A[++lo] = A[hi];
}
}
return lo+1;
}
}