Menu
CoddyTech

Intersection of Two Linked Lists

Dua linked list singly berada dalam satu pool node. Node i terhubung ke node next[i], dan -1 menandai akhir sebuah list. List A dimulai dari node headA dan list B dari node headB. Node-node disimpan tanpa urutan tertentu, jadi ikuti tautannya.

Kedua list dapat bertemu: mulai dari suatu node, keduanya berlanjut melalui node-node yang sama hingga akhir. Kembalikan indeks node pertama yang ada di kedua list, atau -1 jika keduanya tidak memiliki node yang sama.

Fungsi

getIntersectionNode(next: integer-array, headA: integer, headB: integer) → integer
nextinteger-array
indeks node yang ditautkan oleh setiap node, atau -1 untuk node terakhir dalam sebuah list
headAinteger
node pertama dari list A
headBinteger
simpul pertama dari list B
Mengembalikaninteger
simpul pertama yang dimiliki kedua list, atau -1

Batasan

  • 2 ≤ n ≤ 104, dengan n sebagai panjang next.
  • Setiap next[i] bernilai -1 atau indeks node dari 0 hingga n-1.
  • 0 ≤ headA, headB ≤ n-1 dan headA ≠ headB.
  • Kedua list berakhir di -1 tanpa mengunjungi node yang sama dua kali. Tidak ada siklus.
  • Setiap node berada di list A, di list B, atau di keduanya.

Contoh

Input
next = [-1, 4, 1, 5, 0, 1]headA = 3headB = 2
Output
1
Penjelasan
A mengunjungi 3, 5, 1, 4, 0 dan B mengunjungi 2, 1, 4, 0. Mulai dari node 1, keduanya berbagi setiap node, dan tidak ada node A sebelumnya yang juga ada di B, jadi jawabannya adalah 1.
challenge icon

Pertanyaan lanjutan

Bisakah kamu menemukan node dalam waktu O(m + k) dengan memori tambahan O(1)?

Reset kode
def getIntersectionNode(next, headA, headB):
    # Tulis kodemu di sini

Tes #1

Tes #2

Tes #3

Argumen

next = [-1, 4, 1, 5, 0, 1]
headA = 3
headB = 2

Output yang diharapkan

1