Problem Link

Description


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

Β 

Constraints:

  • 0 <= nums.length <= 105
  • -109 <= nums[i] <= 109

Solution


Python3

class Solution:
    def longestConsecutive(self, nums: List[int]) -> int:
        s = set(nums)
        res = 0
        
        while s:
            first = last = s.pop()
            
            while first - 1 in s:
                s.remove(first - 1)
                first -= 1
            
            while last + 1 in s:
                s.remove(last + 1)
                last += 1
            
            res = max(res, last - first + 1)
        
        return res