码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2020-06-14 15:00:47      阅读:63      评论:0      收藏:0      [点我收藏+]

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

技术图片

技术图片

双指针

思路:

双指针覆盖多余重复项,一个指针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

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

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!