1. 题目2. 读题(需要重点注意的东西)3. 解法4. 可能有帮助的前置习题5. 所用到的数据结构与算法思想6. 总结
1. 题目
思路(双指针):
用 i 来表示遍历到第几个数了,用 k 来表示有效数组的范围(有效是指每个数最多只出现两次)。
每次遍历 i ,只需要看一下 k 前面的两个数是不是nums[i],前两个数都等于nums[i]则continue;否则nums[k] = nums[i],k++.
---------------------------------------------------解法---------------------------------------------------:
class Solution {
public int removeDuplicates(int[] nums) {
int k = 0;
for(var num : nums){
if(k < 2 || (nums[k - 1] != num || nums[k - 2] != num)){
nums[k++] = num;
}
}
return k;
}
}
可能存在的问题:
4. 可能有帮助的前置习题[LeetCode] 26. 删除有序数组中的重复项(java实现) 5. 所用到的数据结构与算法思想 6. 总结


![[LeetCode]80. 删除有序数组中的重复项 II(java实现)双指针 [LeetCode]80. 删除有序数组中的重复项 II(java实现)双指针](http://www.mshxw.com/aiimages/31/755089.png)
