Решение задачи
Алгоритм решения задачи:
Для начала рассмотрим неоптимальный алгоритм.
Этот алгоритм не делает ничего умного — он просто считает каждое число числовым, пытаясь отсчитать как можно больше от этого числа, используя только числовое число. После того, как он подсчитает слишком много (т. е. currentNum относится к числу, которого nums не содержит), он записывает длину последовательности, если она больше, чем текущий лучший результат.
Наш же оптимизированный алгоритм содержит только два изменения по сравнению с подходом неоптимального алгоритма: числа хранятся в HashSet (или Set в Python), чтобы разрешить поиск O (1), и мы пытаемся построить последовательности только из чисел, которые еще не часть более длинной последовательности. Для этого сначала необходимо убедиться, что номер, который непосредственно предшествует текущему номеру в последовательности, отсутствует, поскольку этот номер обязательно будет частью более длинной последовательности.
