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.
使用两个指针,其中i遍历原数组中的每个元素,k指向删除重复数字后的长度。
public class Solution {
public int removeDuplicates(int[] nums) {
if(nums.length==0) return 0;
int i=2,k=2;
while(i<nums.length){
if(!(nums[i]==nums[k-1]&&nums[i]==nums[k-2])){
nums[k++]=nums[i];
}
i++;
}
return k;
}
}