/**80. Remove Duplicates from Sorted Array II
* @param nums
* @return 保留<=2个相同数字
*/
public int removeDuplicatesII(int[] nums) {
int count = 0;
int len = nums.length;
int twice = 0;
for (int i=1; i<len; i++) {
if (nums[i] == nums[i-1]) {
twice+=1;
if (twice >= 2) {
count++;
} else {
nums[i-count] = nums[i];
}
} else {
twice = 0;
nums[i-count] = nums[i];
}
}
return len-count;
}
改进,化简逻辑
public int removeDuplicates2(int[] nums) {
boolean twice = false;
int len = 0;
if (nums.length > 0) {
len = 1;
}
for (int i = 1; i < nums.length; i++) {
if (twice == false && nums[i] == nums[i-1]) {
twice = true;
nums[len++] = nums[i];
} else if (nums[i] != nums[i-1]) {
twice = false;
nums[len++] = nums[i];
}
}
return len;
}