Menu
CoddyTech

Sort List

Kamu mendapatkan singly linked list yang disimpan dalam dua array dengan panjang yang sama. Node i menyimpan nilai values[i] dan terhubung ke node next[i], -1 mengakhiri list, dan head adalah node 0. Node-node tersebut tidak disimpan sesuai urutan dalam list, dan array mungkin juga menyimpan node sisa yang tidak pernah dicapai saat menelusuri dari node 0. Node-node itu bukan bagian dari list, bahkan ketika tautannya mengarah ke dalam list.

Urutkan list berdasarkan nilai secara tidak menurun dan kembalikan nilai node-node tersebut dalam urutan itu.

Fungsi

sortList(next: integer-array, values: integer-array) → integer-array
nextinteger-array
indeks node yang dituju setiap node, atau -1 untuk node terakhir
valuesinteger-array
nilai yang disimpan oleh setiap node
Mengembalikaninteger-array
nilai node list, dari yang terkecil terlebih dahulu

Batasan

  • 1 ≤ n ≤ 4000, dengan n sebagai panjang next dan values.
  • -1000 ≤ values[i] ≤ 1000
  • Setiap next[i] adalah -1 atau indeks node dari 0 hingga n-1.
  • Mulai dari node 0, list mencapai -1 tanpa mengunjungi node yang sama dua kali.
  • Node yang tidak dapat dijangkau oleh penelusuran dari node 0 bukan bagian dari list. Entri next-nya dapat menunjuk ke mana saja.

Contoh

Input
next = [3, -1, 4, 2, 1]values = [4, 1, 3, 2, 5]
Output
[1, 2, 3, 4, 5]
Penjelasan
Penelusuran dari node 0 mengunjungi node 0, 3, 2, 4, 1, jadi list tersebut berisi 4, 2, 3, 5, 1. Setelah diurutkan, hasilnya adalah 1, 2, 3, 4, 5.
challenge icon

Pertanyaan lanjutan

Bisakah kamu mengurutkan dengan menyambungkan ulang node dalam waktu O(n log n), tanpa menyalin nilai-nilainya?

Reset kode
def sortList(next, values):
    # Tulis kodemu di sini

Tes #1

Tes #2

Tes #3

Argumen

next = [3, -1, 4, 2, 1]
values = [4, 1, 3, 2, 5]

Output yang diharapkan

[1, 2, 3, 4, 5]