前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode 80 Remove Duplicates from Sorted Array II

LeetCode 80 Remove Duplicates from Sorted Array II

作者头像
一份执着✘
发布2018-12-24 10:14:00
3340
发布2018-12-24 10:14:00
举报
文章被收录于专栏:赵俊的Java专栏赵俊的Java专栏

题意

给定一个数组,删除其中的重复元素,使重复项最多出现两次,然后返回新的长度,要求 O(1) 空间复杂度。

例 1:

代码语言:javascript
复制
给予 nums = [1, 1, 1, 2, 2, 3],

你的函数应该返回 length = 5,前五个元素分别为 1, 1, 2, 2, 3.

例 2:

代码语言:javascript
复制
给予 nums = [0, 0, 1, 1, 1, 1, 2, 3, 3],

你的函数应该返回 length = 7,前五个元素分别为 0, 0, 1, 1, 2, 3, 3.

解法

和 LeetCode 26 Remove Duplicates from Sorted Array 这道题比较类似。 定义变量 k,表示待修改的元素位置,默认为 0,然后遍历后面的元素判断符合条件时,覆盖 k,然后 k 向后移动一位。 判断条件为:

  • 遍历的元素 n 不等于元素 k,也就代表不重复
  • 遍历的元素 n 等于元素 k,但不等于 k - 1。则表示已经有两个重复元素了
  • 对于第二点,需要注意,当 k = 0 时,没有 k - 1。
代码语言:javascript
复制
class Solution {
    public int removeDuplicates(int[] nums) {
        int k = 0;
        for (int i = 1; i < nums.length; i++) {
            if (nums[i] != nums[k] || k == 0 || (nums[i] == nums[k] && nums[i] != nums[k - 1])) {
                nums[++k] = nums[i];
            }
        }
        return k + 1;
    }
}

Runtime: 6 ms, faster than 95.36% of Java online submissions for Remove Duplicates from Sorted Array II.

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-12-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题意
  • 解法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档