Menu
CoddyTech

Sort List

Du erhältst eine einfach verkettete Liste, die in zwei Arrays gleicher Länge gespeichert ist. Knoten i enthält den Wert values[i] und ist mit Knoten next[i] verknüpft. -1 beendet die Liste, und der Kopf ist Knoten 0. Die Knoten sind nicht in Listenreihenfolge gespeichert, und die Arrays können auch übrig gebliebene Knoten enthalten, die beim Durchlaufen ab Knoten 0 nie erreicht werden. Diese gehören nicht zur Liste, selbst wenn ihre Verknüpfungen in die Liste zeigen.

Sortiere die Liste in nicht absteigender Reihenfolge nach dem Wert und gib die Werte ihrer Knoten in dieser Reihenfolge zurück.

Funktion

sortList(next: integer-array, values: integer-array) → integer-array
nextinteger-array
der Index des Knotens, auf den jeder Knoten verweist, oder -1 für den letzten Knoten
valuesinteger-array
der von jedem Knoten gehaltene Wert
Gibt zurückinteger-array
die Werte der Listenknoten, beginnend mit dem kleinsten

Einschränkungen

  • 1 ≤ n ≤ 4000, wobei n die Länge von next und values ist.
  • -1000 ≤ values[i] ≤ 1000
  • Jedes next[i] ist -1 oder ein Knotenindex von 0 bis n-1.
  • Ausgehend vom Knoten 0 erreicht die Liste -1, ohne einen Knoten zweimal zu besuchen.
  • Nodes, die bei der Durchquerung ab Knoten 0 nicht erreicht werden, sind nicht Teil der Liste. Ihre next-Einträge können auf beliebige Stellen verweisen.

Beispiele

Eingabe
next = [3, -1, 4, 2, 1]values = [4, 1, 3, 2, 5]
Ausgabe
[1, 2, 3, 4, 5]
Erklärung
Der Weg von Knoten 0 besucht die Knoten 0, 3, 2, 4, 1, daher lautet die Liste 4, 2, 3, 5, 1. Sortiert ergibt das 1, 2, 3, 4, 5.
challenge icon

Weiterführende Frage

Kannst du durch erneutes Verknüpfen der Knoten in O(n log n) Zeit sortieren, ohne die Werte herauszukopieren?

Code zurücksetzen
def sortList(next, values):
    # Schreibe hier den Code

Test #1

Test #2

Test #3

Argumente

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

Erwartete Ausgabe

[1, 2, 3, 4, 5]