题目:力扣
解题思路:
这个题目我看了好久才理解双指针的解法,太菜了。
思路的话就是注释,主要是弄清楚每个变量代表着什么。
class Solution {
public int removeDuplicates(int[] nums) {
//j指向下一个要被覆盖的元素,count是i指向的元素的个数。
int j = 1, count = 1;
for (int i = 1; i < nums.length; i++) {
//当当前遍历的元素与前一个相同时,count+1
if (nums[i] == nums[i - 1]) {
count++;
}
//不同时,表示i指向新的数字,count记为1
else {
count = 1;
}
//每遍历一个元素,判断当前的个数是否超过2,没有超过的时候就用来覆盖前面的数字
if (count <= 2) {
nums[j] = nums[i];
j++;
}
}
return j;
}
}