LeetCode ---- 80、删除排序数组中的重复项 II

题目链接

思路:

题目要求每个数最多出现两次,并且数组已排序

那么,我们得出,如果需要每个数字只出现两次,只需要每一个数跟它前面两个位置处的数不相等即可,若相等,则需要跳过这个数,若不相等,则需要进行保留

    public int removeDuplicates(int[] nums) {
        if (nums == null || nums.length == 0) {
            return 0;
        }
        int len = nums.length;
        // 如果数组本身长度小于等于2,则直接返回即可
        if (len <= 2) {
            return len;
        }
        // 直接从位置2处往后替换即可
        int i = 2;
        for (int j = 2; j < len; j++) {
            // 若当前该数不等于前两个位置的数,则需要保留此数
            if (nums[j] != nums[i - 2]) {
                nums[i++] = nums[j];
            }
        }
        return i;
    }

猜你喜欢

转载自blog.csdn.net/sinat_34679453/article/details/107092087