Array & Hashing

30. 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.

Examples

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 <= 10^5
  • -10^9 <= nums[i] <= 10^9

Dado un arreglo no ordenado de enteros nums, devuelve la longitud de la secuencia de elementos consecutivos mas larga.

Debes escribir un algoritmo que se ejecute en tiempo O(n).

Ejemplos

Ejemplo 1

Entrada: nums = [100,4,200,1,3,2]
Salida: 4
Explicacion: La secuencia de elementos consecutivos mas larga es [1, 2, 3, 4]. Por lo tanto, su longitud es 4.

Ejemplo 2

Entrada: nums = [0,3,7,2,5,8,4,6,0,1]
Salida: 9

Restricciones

  • 0 <= nums.length <= 10^5
  • -10^9 <= nums[i] <= 10^9
longest_consecutive_sequence.py

# Given an unsorted array of integers, return the length of the longest consecutive sequence.
# Must run in O(n) time.

nums = [100, 4, 200, 1, 3, 2]

# Create a set for O(1) lookups
num_set = set(nums)

longest = 0

for num in num_set:
    # Only start counting if num is the beginning of a sequence
    if num - 1 not in num_set:
        length = 1
        # Count consecutive numbers forward
        while num + length in num_set:
            length += 1
        longest = max(longest, length)

print(longest)  # 4
Keyboard shortcuts
h Previous problem
l Next problem
Esc Back to index
? Toggle this help