leetcode 每日一题 80. 删除排序数组中的重复项 II

Posted nil_f

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode 每日一题 80. 删除排序数组中的重复项 II相关的知识,希望对你有一定的参考价值。

双指针

思路:

双指针覆盖多余重复项,一个指针i负责遍历,一个指针j负责要覆盖的重复项位置。

用count记录重复项的个数,则不用覆盖的情况是nums[i]==nums[j]并且count>2,那么需要覆盖的情况就是nums[i] != nums[j] 或者 count<=2,这里我们可以在nums[i]!=nums[j]时,将count置为1,在count<=2时, 将nums[j]覆盖即可。

代码:

class Solution:
    def removeDuplicates(self, nums: List[int]) -> int:
        j, count = 1, 1
        for i in range(1, len(nums)):
            if nums[i] == nums[i - 1]:
                count += 1
            else:
                count = 1
            if count <= 2:
                nums[j] = nums[i]
                j += 1
                
        return j

 代码:(另一种方式)

class Solution:
    def removeDuplicates(self, nums: List[int]) -> int:
        i = 0
        for e in nums:
            if i < 2 or e != nums[i - 2]:
                nums[i] = e
                i += 1
        return i

 

以上是关于leetcode 每日一题 80. 删除排序数组中的重复项 II的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 解题笔记(C++每日一题)

《LeetCode之每日一题》:288.删除排序链表中的重复元素

《LeetCode之每日一题》:288.删除排序链表中的重复元素

《LeetCode之每日一题》:98.删除排序链表中的重复元素

leetcode 每日一题 83. 删除排序链表中的重复元素

《LeetCode之每日一题》:99.删除排序链表中的重复元素 II