mirror of
https://github.com/prdlk/leetcode.git
synced 2026-11-02 21:22:43 +00:00
57 lines
1.1 KiB
Python
57 lines
1.1 KiB
Python
"""
|
|||
|
|
128. Longest Consecutive Sequence
|
||
|
|
Difficulty: Medium
|
||
|
|
https://leetcode.com/problems/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.
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
Example 1:
|
||
|
|
|
||
|
|
Input: nums = [100,4,200,1,3,2]
|
||
|
|
Output: 4
|
||
|
|
Explanation: The longest consecutive elements sequence is [1, 2, 3,
|
||
|
|
4]. Therefore its length is 4.
|
||
|
|
|
||
|
|
Example 2:
|
||
|
|
|
||
|
|
Input: nums = [0,3,7,2,5,8,4,6,0,1]
|
||
|
|
Output: 9
|
||
|
|
|
||
|
|
Example 3:
|
||
|
|
|
||
|
|
Input: nums = [1,0,1,2]
|
||
|
|
Output: 3
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
Constraints:
|
||
|
|
|
||
|
|
• 0 <= nums.length <= 10^5
|
||
|
|
|
||
|
|
• -10^9 <= nums[i] <= 10^9
|
||
|
|
"""
|
||
|
|
|
||
|
|
|
||
|
|
class Solution:
|
||
|
|
def longestConsecutive(self, nums: list[int]) -> int:
|
||
|
|
seen = set(nums)
|
||
|
|
best = 0
|
||
|
|
|
||
|
|
for n in seen:
|
||
|
|
if n - 1 in seen:
|
||
|
|
continue
|
||
|
|
|
||
|
|
length = 1
|
||
|
|
while length + n in seen:
|
||
|
|
length += 1
|
||
|
|
|
||
|
|
best = max(length, best)
|
||
|
|
|
||
|
|
return best
|