Menu
CoddyTech

Linked List Cycle

Linked list disimpan dalam array next: node i terhubung ke node next[i], dan -1 berarti list berakhir di sana. Head adalah node 0. Ikuti tautan dari head dan kembalikan true jika kamu kembali ke node yang sudah pernah kamu kunjungi, atau false jika kamu mencapai akhir. Node yang tidak pernah dicapai selama penelusuran tidak dihitung, meskipun node-node tersebut saling terhubung dalam perulangan.

Fungsi

hasCycle(next: integer-array) → boolean
nextinteger-array
tautan setiap node: next[i] adalah node setelah node i, atau -1
Mengembalikanboolean
true jika penelusuran dari simpul 0 mengunjungi kembali sebuah simpul, false jika mencapai -1

Batasan

  • 1 ≤ next.length ≤ 104
  • -1 ≤ next[i] ≤ next.length-1
  • Beberapa node dapat terhubung ke node yang sama, dan beberapa node mungkin tidak dapat dijangkau dari head.

Contoh

Input
next = [1, 2, 3, 1]
Output
true
Penjelasan
Penelusuran berjalan dari 0, 1, 2, 3 lalu kembali ke 1. Node 1 dikunjungi dua kali, jadi list memiliki siklus melalui node 1, 2, dan 3.
challenge icon

Pertanyaan lanjutan

Bisakah kamu juga menemukan simpul tempat siklus dimulai, tetap dengan memori tambahan O(1)?

Reset kode
def hasCycle(next):
    # Tulis kodemu di sini

Tes #1

Tes #2

Tes #3

Argumen

next = [1, 2, 3, 1]

Output yang diharapkan

true