https://leetcode.com/problems/longest-consecutive-sequence/description/
from itertools import count
class Solution:
def longestConsecutive(self, nums: List[int]) -> int:
def pop_seq(s, seq):
xs = []
for v in seq:
if v in s:
xs += [v]
s.remove(v)
else:
break
return xs
def take_sequence(s, v):
dnward = count(v-1, -1)
upward = count(v+1, 1)
return (pop_seq(s, dnward)
+ [v]
+ pop_seq(s, upward))
s = set(nums)
max_cnt = 0
while len(s) > 0:
v = s.pop()
seq = take_sequence(s, v)
cnt = len(seq)
max_cnt = max(cnt, max_cnt)
return max_cnt