题目详情:点此处
相比26题,允许了重复数据的个数可以为两个。
分析方法与26类似,还是使用双指针法
首先判断nums.length<=2,成立返回nums.length
因为允许相同数据的个数最多为两个,那么判断的方法就成了判断fast和slow-2的数据是否相等,不等则将nums[slow]=nums[fast]
class Solution {
public int removeDuplicates(int[] nums) {
int n=nums.length;
if(n<=2) return n;
int slow=2;
for(int fast=2;fast<n;fast++){
if(nums[fast]!=nums[slow-2]){
nums[slow]=nums[fast];
slow++;
}
}
return slow;
}
}