Longest Consecutive Sequence
第一次做的时候用的是真并查集思维去做的,这样需要添加额外记录当前子集长度的变量以及一些复杂的逻辑,九章介绍的这种类并查集的做法更加简单,耗时也更少了,首先把输入变为一个set,然后对每个数自行左右扩张,就可以找到当前数的集合大小,当下一次的数也在这个集合里时,因为我们之前已经遍历过并且已经把set里的对应数删去,所以不会进行多余的搜索
class Solution(object):
def longestConsecutive(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
tmp = set(nums)
result = 0
for index, num in enumerate(nums):
left, right = num, num
while left - 1 in tmp:
tmp.remove(left - 1)
left -= 1
while right + 1 in tmp:
tmp.remove(right + 1)
right += 1
result = max(result, right - left + 1)
return result