[LeetCode] 80. Remove Duplicates from Sorted Array II

【原题】 Follow up for “Remove Duplicates”: What if duplicates are allowed at most twice?

For example, Given sorted array nums = [1,1,1,2,2,3],

Your function should return length = 5, with the first five elements of nums being 1, 1, 2, 2 and 3. It doesn’t matter what you leave beyond the new length. 【解释】 作为删除数组中重复元素的进化版,要求最后目标数组中最多只能有每个元素最多重复两次。 【思路】 在Remove Duplicates from Sorted Array一题中,我们只需要记录目标数组下一个该插入的位置,让后续符合要求的元素插入该位置即可。利用同样的思想,只是在比较的时候不是和前一个元素比较,而是前两个元素。

public int removeDuplicates(int[] nums) {
        int pos=0;//记录下一个插入的位置
        for(int i=0;i<nums.length;i++){
            if(i<2||nums[i]>nums[pos-2])//和前两个元素比较
                nums[pos++]=nums[i];
        }
        return pos;//犹豫pos从零开始,所以最后即为目标数组的长度
    }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏desperate633

LintCode 交叉字符串题目分析代码

样例 比如 s1 = "aabcc" s2 = "dbbca" 当 s3 = "aadbbcbcac",返回 true. 当 s3 = "aadbbba...

874
来自专栏Bingo的深度学习杂货店

三个数的和小于等于k

给一个数组以及一个数K, 从这个数组里面选择三个数,使得三个数的和小于等于K, 有多少种选择的方法?(不包括重复的情况) Example: Input: nu...

3485
来自专栏Vamei实验室

纸上谈兵: 树, 二叉树, 二叉搜索树

树的特征和定义 树(Tree)是元素的集合。我们先以比较直观的方式介绍树。下面的数据结构是一个树: ? 树有多个节点(node),用以储存元素。某些节点之间存在...

1907
来自专栏codingforever

经典算法巡礼(七) -- 排序之堆排序

很多时候,我们需要处理有序的元素,但不一定要求它们全部有序,或是不一定要一次就将它们排序。比如你可能启动了若干个定时器,那么下一次处理定时器事件只需要考虑距离现...

252
来自专栏desperate633

LintCode 最长上升连续子序列题目样例分析1(普通解法)分析2(使用队列)

给定一个整数数组(下标从 0 到 n-1, n 表示整个数组的规模),请找出该数组中的最长上升连续子序列。(最长上升连续子序列可以定义为从右到左或从左到右的序列...

622
来自专栏C语言及其他语言

【编程经验】优秀题解

定义一个数组prime[],赋初值为0,数组下表对应这个数字,通过数组值来判断是否为素数

812
来自专栏codingforever

经典算法巡礼(二) -- 排序之选择排序

选择排序,如冒泡排序一样,从名字中即可大概猜测其排序的原理。其工作原理就是从未排序的数组中选出最大(小)的元素,将其放置至数组的首(尾)部,重复此过程直至没有未...

221
来自专栏xcywt

《大话数据结构》 查找 以及一个简单的哈希表例子

第八章 查找 定义:查找就是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录)。 8.2 查找概论 查找表(Search table):...

46112
来自专栏Petrichor的专栏

leetcode: 78. Subsets

551
来自专栏desperate633

LeetCode 75. Sort Colors题目分析

给定一个包含红,白,蓝且长度为 n 的数组,将数组元素进行分类使相同颜色的元素相邻,并按照红、白、蓝的顺序进行排序。 我们可以使用整数 0,1 和 2 分别代...

703

扫码关注云+社区