Menu
CoddyTech

Merge Two Sorted Lists

Sana, her biri aynı uzunlukta iki dizide saklanan iki tek yönlü bağlı liste verilir. İlk listede i düğümü values1[i] değerini tutar ve next1[i] düğümüne bağlanır. İkinci liste de next2 ve values2 ile aynı şekilde çalışır. Her iki listede de -1 listeyi sonlandırır ve baş düğüm 0'dır. Düğümler liste sırasına göre saklanmaz; bu yüzden bağlantıları takip et.

Her liste, bağlantıları boyunca azalmayan sırada sıralanmıştır. İki listeyi tek bir sıralı listede birleştir ve değerlerini sırayla döndür.

Fonksiyon

mergeTwoLists(next1: integer-array, values1: integer-array, next2: integer-array, values2: integer-array) → integer-array
next1integer-array
ilk listedeki her düğümün bağlandığı düğümün indeksi veya son düğümü için -1
values1integer-array
ilk listedeki her düğümün tuttuğu değer
next2integer-array
ikinci listedeki her düğümün bağlantı verdiği düğümün indeksi veya son düğümü için -1
values2integer-array
İkinci listedeki her düğümün tuttuğu değer
Döndürürinteger-array
birleştirilmiş listenin değerleri, sırasıyla

Kısıtlar

  • 1 ≤ L1 ≤ 2000; burada L1, next1 ve values1 uzunluğudur.
  • 1 ≤ L2 ≤ 2000; burada L2, next2 ve values2 uzunluğudur.
  • -1000 ≤ values1[i], values2[j] ≤ 1000
  • next1 içindeki her girdi -1 veya ilk listenin bir düğüm indeksi, next2 içindeki her girdi ise -1 veya ikinci listenin bir düğüm indeksidir.
  • 0 düğümünden başlayarak her liste, düğümlerinin her birini tam olarak bir kez ziyaret eder ve ardından -1 değerine ulaşır. Döngü yoktur.

  • Bağlantıları boyunca her liste azalmayan sırada sıralanmıştır.

Örnekler

Girdi
next1 = [2, -1, 1]values1 = [1, 6, 4]next2 = [3, 2, -1, 1]values2 = [2, 7, 9, 3]
Çıktı
[1, 2, 3, 4, 6, 7, 9]
Açıklama
Bağlantıları izleyerek ilk liste 0, 2, 1 düğümlerini ziyaret eder ve 1, 4, 6 değerlerini okur; ikinci liste 2, 3, 7, 9 değerlerini okur. Her seferinde öndeki küçük değeri almak 1, 2, 3, 4, 6, 7, 9 sonucunu verir.
challenge icon

Ek soru

k sıralı listeyi, N toplam düğüm sayısı olmak üzere, O(N log k) zamanda birleştirebilir misin?

Kodu sıfırla
def mergeTwoLists(next1, values1, next2, values2):
    # Kodu buraya yazın

Test #1

Test #2

Test #3

Argümanlar

next1 = [2, -1, 1]
values1 = [1, 6, 4]
next2 = [3, 2, -1, 1]
values2 = [2, 7, 9, 3]

Beklenen Çıktı

[1, 2, 3, 4, 6, 7, 9]