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.
public class Solution {
public int removeDuplicates(int[] nums) {
int len=nums.length;
if(len<3)
return len;
int i=1;
int j=1;
int n=1;//标记遇见的次数
while(i<len){
if(nums[i]==nums[i-1]){
n++;
if(n==2){
nums[j++]=nums[i++];
}
else
i++;
}
else{
nums[j++]=nums[i++];
n=1;
}
}
return j;
}
}