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.
정렬되지 않은 정수 배열이 주어졌을때,
이들로 이룰수 있는 가장 긴 연속하는 수열의 길이를 구하세요
O(n) 시간 복잡도 안에 해결해야 합니다.
Input: nums = [100,4,200,1,3,2]
Output: 4
Explanation: 가장 긴 연속 수열은 [1, 2, 3, 4] 로 길이는 4이다.
class Solution:
def longestConsecutive(self, nums: List[int]) -> int:
if len(nums) == 0: return 0
s: set[int] = set()
d: dict[int, int] = {}
large = -999999
for num in nums:
s.add(num)
for num in nums:
if num not in s: continue
if len(s) == 0: break
streak = 1
s.remove(num)
for i in range(num - 1, -9999999999, -1):
if i in s:
s.remove(i)
streak += 1
continue
elif i in d:
streak += d[i]
break
d[num] = streak
large = max(large, d[num])
return large