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
    
  • 相关阅读:
    互联网: 让网站强制使用https
    非常好用的原型设计软件Balsamiq Mockups
    11.Mapreduce实例——MapReduce自定义输出格式
    01.Mapreduce实例——去重
    08.Mapreduce实例——倒排索引
    06.Mapreduce实例——Reduce端join
    05.Mapreduce实例——Map端join
    07.Mapreduce实例——二次排序
    02.Mapreduce实例——求平均值
    10.Mapreduce实例——MapReduce自定义输入格式小
  • 原文地址:https://www.cnblogs.com/panweiwei/p/14024730.html
Copyright © 2011-2022 走看看