zoukankan      html  css  js  c++  java
  • 80. 删除排序数组中的重复项 II




    代码一思路:

    设两个指针cur、i,cur是有效元素下标,初值为0,i是从第一个元素开始的遍历指针;另外用count记录当前相同元素的个数;

    i和cur指向的元素相同且count值小于2,说明cur指向的元素出现第二次,为有效元素,cur、i右移,count计数器加1;

    i和cur指向的元素相同且count值不小于2,说明cur指向的元素出现已经大于两次,此后均是非有效元素,cur不动,仅i右移;

    i和cur指向的元素不同,说明遇到新元素,为有效元素,cur、i右移,count计数器重置为1;

    返回值是有效元素个数,即cur+1。

    class Solution(object):
        def removeDuplicates(self, nums):
            """
            :type nums: List[int]
            :rtype: int
            """
            n = len(nums)
            if not n:
                return 0
            count = 1
            cur = 0
            i = 1
            while i < n:
                # i和cur指向的元素相同且count值小于2,说明cur指向的元素出现第二次,为有效元素,cur、i右移,count计数器加1;
                if nums[i] == nums[cur] and count < 2:
                    cur += 1
                    nums[cur] = nums[i]
                    count += 1
                    i += 1
                # i和cur指向的元素相同且count值不小于2,说明cur指向的元素出现已经大于两次
                elif nums[i] == nums[cur] and count >= 2:
                    i += 1
                # i和cur指向的元素不同,说明遇到新元素,为有效元素
                elif nums[i] != nums[cur]:
                    cur += 1
                    nums[cur] = nums[i]
                    count = 1
                    i += 1
            return cur + 1
    

    代码二:代码一思路的优化。

    因为元素是有序的,可以直接用nums[i]和nums[i-2]进行判断,如果相等,那么说明重复的元素一定超过了两个,当前元素需要跳过。

    class Solution(object):
        def removeDuplicates(self, nums):
            """
            :type nums: List[int]
            :rtype: int
            """
            i = 0
            for item in nums:
                if i < 2 or nums[i - 2] != item:
                    nums[i] = item
                    i += 1
            return i
    
  • 相关阅读:
    上有传参下传json的接口调用
    通过群号,获取到群成员信息,下载头像到指定文件夹
    django模型 之 Meta
    k8s 日志的收集
    systemctl 管理服务
    安装JumpServer
    1 nginx的配置详解
    十六 RBAC
    python3 与linux间的小知识
    解决问题:OSError: mysql_config not found
  • 原文地址:https://www.cnblogs.com/panweiwei/p/14024730.html
Copyright © 2011-2022 走看看