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.
把重复两次以上的数字拿掉,返回新的数组长度,要求原数组前n个元素是满足条件的新数组。
用两个指针去判断即可,一个用来标记已重复的位置,另一个判断当前元素是否可以与前一个交换
public class Solution {
public int removeDuplicates(int[] nums) {
if(nums.length<3)return nums.length;
int count = 0;
int idx = 0;
for(int i=0;i<nums.length;i++){
if(i>0&&nums[i]==nums[i-1]){
count++;
if(count>=3){
continue;
}
}
else count=1;
nums[idx++] = nums[i];
}
return idx;
}
}