def longest_consecutive(nums):
if not nums:
return 0
转为集合,便于O(1)时间判断元素是否存在
num_set = set(nums)
max_length = 0
for num in num_set:
只从连续序列的起点开始计算(即num-1不在集合中)
if num - 1 not in num_set:
current_num = num
current_length = 1
while current_num + 1 in num_set:
current_num += 1
current_length += 1
max_length = max(max_length, current_length)
return max_length
print(longest_consecutive([100, 200, 1, 2, 3, 90, 4]))