Связный список с циклом

Легкая
44%
Python 3.12JavaScriptGo 1.17.13Java 21C#C++

Дана вершина head односвязного списка. Определите, содержит ли этот список цикл.

В связном списке существует цикл, если при последовательном переходе по указателю next можно снова попасть в уже посещённый узел.

Во внутренних тестовых данных используется переменная pos, которая обозначает индекс узла, с которым соединён указатель next последнего элемента списка (хвоста). Обратите внимание, что pos не передаётся в качестве параметра функции.

Верните true, если в связном списке есть цикл, и false в противном случае.

Пример 1:

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

Объяснение: В списке есть цикл, где хвост соединён со вторым узлом (индекс 1).

Пример 2:

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

Объяснение: В списке есть цикл, где хвост соединён с первым узлом (индекс 0).

Пример 3:

Вход: head = [1], pos = -1
Выход: false

Объяснение: В списке нет цикла.

Ограничения:

  • Количество узлов в списке находится в диапазоне [0, 104].
  • -105 <= Node.val <= 105
  • pos равно -1 или является валидным индексом в связном списке.