80. 删除排序数组中的重复项 II
给定一个增序排列数组 nums ,你需要在 原地 删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
解析
快慢指针,一样的思路
class Solution {
public int removeDuplicates(int[] nums) {
int slow = 0;
int quick = 1;
int count = 1;
int pre = nums[0];
while(quick<nums.length){
int val = nums[quick];
if(val==pre){
count++;
}else if(val>pre){
count=1;
}else if(val<pre){
continue;
}
if(count<=2) nums[++slow] = val;
pre = val;
quick++;
}
return slow+1;
}
}
注意:本文归作者所有,未经作者允许,不得转载