Цикл в связанном списке

EasyAlgo
05:00
Лучше работает на десктопе
Linked ListsTwo Pointers

Дан массив nums (элементы связанного списка) и число pos — индекс узла, на который указывает последний элемент (создавая цикл). Если pos = -1, цикла нет.

Определите, есть ли в списке цикл. Постройте связанный список, создайте цикл если нужно, и используйте алгоритм Флойда.

Сигнатура

def has_cycle(nums: list[int], pos: int) -> bool:

Примеры

has_cycle([3, 2, 0, -4], 1) → True  # хвост указывает на индекс 1
has_cycle([1, 2], 0) → True
has_cycle([1], -1) → False

Constraints

- 0 ≤ len(list) ≤ 10⁴
- -10⁵ ≤ val ≤ 10⁵
- pos ∈ [-1, len(list) - 1]

Примеры

Пример 1

Вход:
nums = [3,2,0,-4]
pos = 1
Выход:true

Пример 2

Вход:
nums = [1,2]
pos = 0
Выход:true

Пример 3

Вход:
nums = [1]
pos = -1
Выход:false
Консоль
Нажмите Run или Ctrl+Enter для запуска