Menu
CoddyTech

Longest Consecutive Sequence

СреднеХешированиеpython iconjava iconcpp iconc iconjs icon+10

Дан массив целых чисел nums в произвольном порядке. Последовательность подряд идущих чисел — это группа значений x, x+1, x+2 и так далее, каждое из которых встречается в nums. Верните длину самой длинной последовательности подряд идущих чисел. Значение, встречающееся более одного раза, учитывается один раз.

Функция

longestConsecutive(nums: integer-array) → integer
numsinteger-array
целые числа в любом порядке; повторы разрешены
Возвращаетinteger
длина самой длинной последовательности подряд идущих значений в nums

Ограничения

  • 1 ≤ nums.length ≤ 104
  • -109 ≤ nums[i] ≤ 109
  • Значения могут повторяться. Позиции в массиве не имеют значения, важно только, какие значения присутствуют.

Примеры

Ввод
nums = [40, 4, 39, 1, 3, 2, 41]
Вывод
4
Пояснение
1, 2, 3 и 4 присутствуют в массиве, образуя последовательность из 4 чисел, хотя они и разбросаны по массиву. В другой последовательности, от 39 до 41, всего 3 значения.

lock icon+17 скрытых тестов при отправке

challenge icon

Дополнительный вопрос

Предположим, значения поступают по одному, и после каждого из них нужно сообщать длину самой длинной последовательности на данный момент. Сможешь обновлять ответ в среднем за O(1) на каждое значение?

Сбросить код
def longestConsecutive(nums):
    # Напишите код здесь
Тестовые случаи

Случай 1

Случай 2

Случай 3

Ввод

nums = [40, 4, 39, 1, 3, 2, 41]

Ожидается

4