80. 删除排序数组中的重复项 II

题目

题解

方法:双指针法
跟第26题类似,26题也是类似这种"往前覆盖重复的数字"的思想。

代码

public class code80 {

    // public static int removeDuplicates(int[] nums) {
    // if (nums.length == 0) {
    // return 0;
    // }
    // int i = 0;
    // int count = 1;
    // for (int j = 1; j < nums.length; j++) {
    // if (nums[j] != nums[i]) {
    // i++;
    // nums[i] = nums[j];
    // count = 1;
    // } else if (count >= 2) {
    // continue;
    // } else {
    // i++;
    // nums[i] = nums[j];
    // count++;
    // }
    // }
    // return i + 1;
    // }

    public static int removeDuplicates(int[] nums) {
        if (nums.length <= 2) {
            return nums.length;
        }
        int index = 2;
        for (int i = 2; i < nums.length; i++) {
            if (nums[i] != nums[index - 2]) {
                nums[index] = nums[i];
                index++;
            }
        }
        return index;
    }

    public static void main(String[] args) {
        int nums[] = { 0, 0, 1, 1, 1, 1, 2, 3, 3 };
        int len = removeDuplicates(nums);
        for (int i = 0; i < len; i++) {
            System.out.print(nums[i] + " ");
        }
        System.out.println();
    }
}

参考

  1. 删除排序数组中的重复项 II——题解一
  2. 直接遍历一次即可——题解二
全部评论

相关推荐

03-29 12:10
门头沟学院 C++
挣K存W养DOG:散漫消极者淘汰,一眼坑爹。实习几个月转正的时候说你加班太少,能力还行态度不够积极裁了,马上老实。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务