题目考察的知识点

考察双指针遍历数组

题目解答方法的文字分析

使用左右指针遍历数组,使用变量count来计数从而控制数组的原地修改。

本题解析所用的编程语言

使用Java解答

完整且正确的编程代码

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型一维数组 
     * @return int整型
     */
    public int remove_duplicates_v3 (int[] nums) {
        // write code here
        if (nums.length == 0)  return 0;
        int i = 0; 
        int count = 1; // 当前位置上牛群数量
        for (int j = 1; j < nums.length; j++) { //j从1开始
            if (nums[j] == nums[j - 1]) { //相同的位置
                if (count < 3) {
                    // 该位置还可以放牛
                    nums[++i] = nums[j];
                    count++;
                }
            } else {
                // 如果当前位置与上一个位置不相同 将牛群移动到数组中,并重置计数器
                nums[++i] = nums[j];
                count = 1;
            }
        }
        return i + 1;
    }
}