Given an unsorted array of integers nums
, return the ength of the longest consecutive elements sequence.
You must write an algorithm that runs in O(n)
time.
nums.length
<= nums[i]
<= Input: nums = [100,4,200,1,3,2]
Output: 4
Input: nums = [0,3,7,2,5,8,4,6,0,1]
Output: 9
Explanation: The longest consecutive elements sequence is [1, 2, 3, 4]. Therefore its length is 4.
class Solution:
def longestConsecutive(self, nums: List[int]) -> int:
_dict = dict.fromkeys(nums, 0)
ret = 0
for num in _dict:
# 현재 보고 있는 숫자가 시퀀스의 중간이 아닐때만 실행
if num - 1 not in _dict:
length = 1
next = num + 1
# 다음 숫자가 있을때 계속해서 찾으며 시퀀스 길이를 늘려나간다.
while next in _dict:
next += 1
length += 1
# 시퀀스를 다 찾으면 기존에 있던 가장 긴 길이와 현재 찾은 길이를 비교하여 갱신
ret = max(ret, length)
return ret