先把数组变成哈希
然后以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