zoukankan      html  css  js  c++  java
  • leetcode128 Longest Consecutive Sequence

     1 """
     2 Given an unsorted array of integers, find the length of the longest consecutive elements sequence.
     3 Your algorithm should run in O(n) complexity.
     4 Example:
     5 Input: [100, 4, 200, 1, 3, 2]
     6 Output: 4
     7 Explanation: The longest consecutive elements sequence is [1, 2, 3, 4]. Therefore its length is 4.
     8 """
     9 """
    10 解法一:关键用了自查找的想法,找到以后删除,节省时间
    11 将nums用set处理一下,然后看成一个队列
    12 首先将nums[0]出队列
    13 令 j = nums[0]+1 ,判断nums[0]右边的连续数字是否在nums中,
    14 如果存在:将nums[j]从数组中移除remove, j=j+1, 数字增大继续检查是否在nums中,
    15 令 i = nums[0]-1, 判断nums[0]左边的连续数字是否在nums中,
    16 如果存在:将nums[i]从数组中移除remove, i=i-1, 数字减小继续检查是否在nums中
    17 用res=max(res, j-i-1)记录最大长度
    18 """
    19 class Solution1:
    20     def longestConsecutive(self, nums):
    21         nums = set(nums)
    22         res = 0
    23         while nums:
    24             n = nums.pop()
    25             j = n+1 #!!!这种自查找式的思路很新颖
    26             while j in nums:
    27                 nums.remove(j)
    28                 j += 1
    29             i = n-1 #!!!
    30             while i in nums:
    31                 nums.remove(i)
    32                 i -= 1
    33             res = max(res, j-i-1)
    34         return res
    35 """
    36 利用dict(),以数组中每个值为key,以该值往后连续序列为value,默认为1
    37 并将i+1遍历后的数值删去
    38 """
    39 class Solution2:
    40     def longestConsecutive(self, nums):
    41         d = dict()
    42         res = 0
    43         for num in nums:
    44             d[num] = 1
    45         for num in nums:
    46             if num in d:
    47                 temp = num+1
    48                 while temp in d:
    49                     d[num] += d[temp]
    50                     d.pop(temp)
    51                     temp += 1
    52                 res = max(res, d[num])
    53         return res
  • 相关阅读:
    十五组TD信息通的使用体验报告
    如何让Div中的Table居中
    SQL SERVER临时表的使用
    如何将px换成em,px与em区别是什么?
    再说委托
    onclick与onCommand的区别
    亚马逊购物的用户体验分析
    jQuery 1.4 版本的十五个新特性
    如何选择SEO公司才能避免上当
    jQuery对象与dom对象
  • 原文地址:https://www.cnblogs.com/yawenw/p/12410477.html
Copyright © 2011-2022 走看看