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 значения.
challenge icon

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

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

Сбросить код
def longestConsecutive(nums):
    # Напишите код здесь

Тест #1

Тест #2

Тест #3

Аргумент

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

Ожидаемый вывод

4