128. Longest Consecutive Sequence
Given an unsorted array of integers nums
, return the length of the longest consecutive elements sequence.
You must write an algorithm that runs in O(n)
time.
def longestConsecutive_O_N(self, nums: List[int]):
longest = 0
numSet = set(nums)
for n in nums:
if n - 1 not in numSet:
curNum = n
curStreak = 1
while curNum + 1 in numSet:
curNum += 1
curStreak += 1
longest = max(longest, curStreak)
return longest
def longestConsecutiveMyOldAlgo(nums):
s = set(nums)
max_len = 0
explored = set()
for n in nums:
if n in explored:
continue
seq_len = 1
# traverse left
p = n - 1
while p in s:
explored.add(p)
p -= 1
seq_len += 1
# traverse right
p = n + 1
while p in s:
explored.add(p)
p += 1
seq_len += 1
max_len = max(max_len, seq_len)
return max_len
Comments
Post a Comment