有第一题的基础很容易写 只需要添加一个重复个数的计数器就可以完成
如果不清楚可以看删除有序数组的重复项这个第一题的解析
class Solution {
public int removeDuplicates(int[] nums) {
int p = 0; // 指示至多两元素应该放置的位置
int p1 = 0; // 第一个指针,用于遍历数组
while (p1 < nums.length) { // 循环遍历数组
int p2 = p1 + 1; // 第二个指针,用于查找连续重复的元素
int recount = 0;//定义一个重复次数的计数器
while (p2 < nums.length && nums[p1] == nums[p2]) { // 找到连续重复的元素
p2++; // 移动第二个指针
recount++;//每次找到重复元素就加1
}
if (recount >= 1){
nums[p] = nums[p1];
nums[p+1] = nums[p1];//把数组中重复两个或以上的都存两次
p+=2; // 移动至多两个元素的指针
}else{
nums[p] = nums[p1]; // 将当前非重复的元素放置到至多两元素的位置
p++; // 移动至多两个元素的指针
}
p1 = p2; // 更新第一个指针到下一个非重复元素的位置
}
return p;
}
}
没啥难度 easy