Menu
CoddyTech

Intersection of Two Linked Lists

İki tek yönlü bağlı liste, tek bir düğüm havuzunda bulunuyor. i düğümü next[i] düğümüne bağlanır ve -1 bir listenin sonunu belirtir. A listesi headA düğümünden, B listesi ise headB düğümünden başlar. Düğümler belirli bir sıraya göre saklanmadığından bağlantıları takip edin.

İki liste bir noktada birleşebilir: Bir düğümden itibaren sona kadar aynı düğümler üzerinden devam ederler. Her iki listede de bulunan ilk düğümün indeksini döndürün veya ortak düğümleri yoksa -1 döndürün.

Fonksiyon

getIntersectionNode(next: integer-array, headA: integer, headB: integer) → integer
nextinteger-array
her düğümün bağlantı verdiği düğümün indeksi ya da listedeki son düğüm için -1
headAinteger
Liste A'nın ilk düğümü
headBinteger
B listesinin ilk düğümü
Döndürürinteger
iki listenin paylaştığı ilk düğüm veya -1

Kısıtlar

  • 2 ≤ n ≤ 104; burada n, next uzunluğudur.
  • Her next[i], -1 ya da 0 ile n-1 arasında bir düğüm indeksidir.
  • 0 ≤ headA, headB ≤ n-1 ve headA ≠ headB.
  • Her iki liste de bir düğümü iki kez ziyaret etmeden -1 noktasında sona erer. Döngü yoktur.
  • Her düğüm A listesinde, B listesinde veya her iki listededir.

Örnekler

Girdi
next = [-1, 4, 1, 5, 0, 1]headA = 3headB = 2
Çıktı
1
Açıklama
A, 3, 5, 1, 4, 0 düğümlerini, B ise 2, 1, 4, 0 düğümlerini ziyaret eder. 1 düğümünden itibaren her düğümü paylaşırlar ve A'nın daha önceki hiçbir düğümü B'de bulunmadığından yanıt 1'dir.
challenge icon

Ek soru

O(m + k) sürede ve O(1) ek bellek kullanarak düğümü bulabilir misin?

Kodu sıfırla
def getIntersectionNode(next, headA, headB):
    # Kodu buraya yazın

Test #1

Test #2

Test #3

Argümanlar

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

Beklenen Çıktı

1