题目:力扣

解题思路:

这个题目我看了好久才理解双指针的解法,太菜了。

思路的话就是注释,主要是弄清楚每个变量代表着什么。

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;
    }
}