mirror of
https://github.com/prdlk/leetcode.git
synced 2026-11-02 13:12:44 +00:00
69 lines
1.9 KiB
Plaintext
69 lines
1.9 KiB
Plaintext
---
|
|
title: '128. Longest Consecutive Sequence'
|
|
description: Given an unsorted array of integers nums, return the length of the longest consecutive elements sequence
|
|
icon: dot
|
|
topics:
|
|
- { name: "Array", slug: "array" }
|
|
- { name: "Hash Table", slug: "hash-table" }
|
|
- { name: "Union-Find", slug: "union-find" }
|
|
issue: "https://github.com/prdlk/leetcode/issues/34"
|
|
companies:
|
|
- { name: "tcs", period: "Thirty Days", frequency: 74.3 }
|
|
- { name: "Bloomberg", period: "Thirty Days", frequency: 69.8 }
|
|
- { name: "Amazon", period: "Thirty Days", frequency: 65.8 }
|
|
- { name: "Microsoft", period: "Thirty Days", frequency: 57.2 }
|
|
- { name: "Google", period: "Thirty Days", frequency: 53.2 }
|
|
- { name: "Apple", period: "Three Months", frequency: 69 }
|
|
- { name: "Meta", period: "Three Months", frequency: 34.5 }
|
|
- { name: "Paytm", period: "Six Months", frequency: 100 }
|
|
- { name: "Nvidia", period: "Six Months", frequency: 91.1 }
|
|
- { name: "TikTok", period: "Six Months", frequency: 55.2 }
|
|
- { name: "Salesforce", period: "Six Months", frequency: 50.2 }
|
|
sidebar:
|
|
label: 'Longest Consecutive Sequence'
|
|
badge: 'Medium'
|
|
---
|
|
|
|
::::warning
|
|
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`
|
|
|
|
## Solution
|
|
|
|
```py
|
|
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
|
|
```
|