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

2021-05-14 09:29

阅读:540

标签:双指针   moved   color   img   mic   ret   ica   for   重复   

技术图片

技术图片

双指针

思路:

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

用count记录重复项的个数,则不用覆盖的情况是nums[i]==nums[j]并且count>2,那么需要覆盖的情况就是nums[i] != nums[j] 或者 count

代码:

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 :
                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 or e != nums[i - 2]:
                nums[i] = e
                i += 1
        return i

 

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

标签:双指针   moved   color   img   mic   ret   ica   for   重复   

原文地址:https://www.cnblogs.com/nilhxzcode/p/13124592.html


评论


亲,登录后才可以留言!