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
  • 相关阅读:
    第36课 经典问题解析三
    第35课 函数对象分析
    67. Add Binary
    66. Plus One
    58. Length of Last Word
    53. Maximum Subarray
    38. Count and Say
    35. Search Insert Position
    28. Implement strStr()
    27. Remove Element
  • 原文地址:https://www.cnblogs.com/yawenw/p/12410477.html
Copyright © 2011-2022 走看看