链接:128. 最长连续序列 - 力扣(LeetCode)

先把数组变成哈希

然后以key遍历哈希表,只有每个数字为连续串首位时才进入,即哈希表中不存在key-1,这样才能做到O(N)

 1 class Solution(object):
 2     def longestConsecutive(self, nums):
 3         """
 4         :type nums: List[int]
 5         :rtype: int
 6         """
 7         help_dict = {}
 8         i = 0 
 9         num = len(nums)
10         res_len = 0
11         while i < num:
12             help_dict[nums[i]] = 1
13             i += 1
14         for key in help_dict.keys():
15             if key - 1 in help_dict:
16                 continue
17             mid_len = 1
18             while key + 1 in help_dict:
19                 mid_len += 1
20                 key += 1
21             res_len = max(res_len, mid_len)
22         return res_len