solution accepted

This commit is contained in:
Jacob Delgado 2023-09-07 02:01:26 -07:00
parent 15bd3181c2
commit 4e83f1d5ea

View File

@ -3,33 +3,26 @@ def longestConsecutive(nums):
:type nums: List[int]
:rtype: int
"""
# Handle edge-case
if len(nums) < 1:
# If list empty, return 0
if not nums:
return 0
nums.sort()
sequence = [nums[0]]
answer = 0
temp = None
print(nums)
for r in range(len(nums)):
# print(nums[r])
# print(f'seq is {sequence} with len of {len(sequence)}')
if nums[r] == max(sequence)+1 and nums[r] not in sequence:
# print(f'hit {nums[r]}')
sequence.append(nums[r])
elif nums[r] == max(sequence):
continue
else:
print(f'seq is {sequence} with len of {len(sequence)}')
if len(sequence) > answer:
answer = len(sequence)
# print('hit')
sequence.clear()
sequence.append(nums[r])
if len(sequence) > answer:
return len(sequence)
else:
return answer
# Create a set for O(n) search
num_set = set(nums)
longest_streak = 0
for num in num_set:
if num - 1 not in num_set: # Start of a potential streak
current_num = num
current_streak = 1
while current_num + 1 in num_set: # Continue the streak
current_num += 1
current_streak += 1
longest_streak = max(longest_streak, current_streak)
return longest_streak