Дан массив nums с целочисленными значениями. Необходимо найти длину самой длинной последовательности элементов в массиве.
Напишите функцию longest_consecutive_sequence(nums: List[int]) -> int, которая принимает на вход неотсортированный массив целых чисел nums и возвращает целое число - длину самой длинной последовательности элементов в массиве.
Пример 1:
Ввод: nums = [100, 4, 200, 1, 3, 2]
Вывод: 4
Пояснение: Самая длинная последовательность - [1, 2, 3, 4]. Её длина - 4.
Пример 2:
Ввод: nums = [0,3,7,2,5,8,4,6,0,1]
Вывод: 9
Пояснение: Самая длинная последовательность - [0,1,2,3,4,5,6,7,8]. Её длина - 9.
Для решения задачи будет использоваться алгоритм нахождения длины последовательности элементов в массиве.
num_set из массива чисел nums.longest_seq_len в 0.num в num_set:
num - 1 не находится в num_set, то это начало последовательности. Инициализируем curr_seq_len в 1.curr_seq_len на 1.curr_seq_len больше longest_seq_len, то обновляем longest_seq_len значением curr_seq_len.longest_seq_len.Пусть дан массив nums = [100, 4, 200, 1, 3, 2].
num_set = {1, 2, 3, 4, 100, 200}.longest_seq_len в 0.num в num_set:
num = 1. num - 1 = 0 не находится в num_set. curr_seq_len инициализируется в 1.num = 2. num - 1 = 1 находится в num_set. curr_seq_len увеличивается на 1, становится равным 2.num = 3. num - 1 = 2 находится в num_set. curr_seq_len увеличивается на 1, становится равным 3.num = 4. num - 1 = 3 находится в num_set. curr_seq_len увеличивается на 1, становится равным 4.num = 100. num - 1 = 99 не находится в num_set. curr_seq_len инициализируется в 1.num = 200. num - 1 = 199 не находится в num_set. curr_seq_len инициализируется в 1.longest_seq_len, равный 4.