
[LeetCode] 128. Longest Consecutive Sequence

start_idx that marks the beginning of the current consecutive sequence.start_idx to the current index.length.start_idx to the next index.class Solution:
def longestConsecutive(self, nums: List[int]) -> int:
num_set = sorted(set(nums))
longest = 0
length = 0
start_idx = 0
for i, curr in enumerate(num_set):
if i >= len(num_set) - 1:
length = i - start_idx + 1
elif curr + 1 != num_set[i+1]:
length = i - start_idx + 1
start_idx = i+1
longest = max(longest, length)
return longest
start_idx), directly track the current sequence length.prev + 1), increment length.longest and reset length to 1.class Solution:
def longestConsecutive(self, nums: List[int]) -> int:
if not nums:
return 0
num_set = sorted(set(nums)) # unique + sort
longest = 1
length = 1
for i in range(1, len(num_set)):
if num_set[i] == num_set[i - 1] + 1:
length += 1
else:
longest = max(longest, length)
length = 1
return max(longest, length)
num - 1 does not exist in the set).num + 1, num + 2, ...) to count the sequence length.class Solution:
def longestConsecutive(self, nums: List[int]) -> int:
num_set = set(nums)
longest = 0
for num in num_set:
# start of sequence
if num - 1 not in num_set:
length = 1
curr = num
while curr + 1 in num_set:
curr += 1
length += 1
longest = max(longest, length)
return longest