Menu
CoddyTech

Remove Nth Node From End of 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 verweist auf den Knoten next[i]; -1 beendet die Liste, und der Kopf ist Knoten 0. Die Knoten sind nicht in Listenreihenfolge gespeichert, folge also den Verweisen.

Entferne den n-ten Knoten, vom Ende der Liste aus gezählt, wobei der letzte Knoten der 1. vom Ende ist. Gib die Werte der verbleibenden Knoten in Listenreihenfolge zurück.

Funktion

removeNthFromEnd(values: integer-array, next: integer-array, n: integer) → integer-array
valuesinteger-array
der von jedem Knoten gehaltene Wert
nextinteger-array
der Index des Knotens, auf den jeder Knoten verweist, oder -1 für den letzten Knoten
ninteger
welcher Knoten entfernt werden soll, vom Ende aus gezählt, wobei 1 der letzte Knoten ist
Gibt zurückinteger-array
die verbleibenden Werte in Listenreihenfolge, leer, wenn der einzige Knoten entfernt wird

Einschränkungen

  • 1 ≤ L ≤ 5000, wobei L die Länge von values und von next ist.
  • -100 ≤ values[i] ≤ 100
  • 1 ≤ n ≤ L
  • Jedes next[i] ist -1 oder ein Knotenindex von 0 bis L-1.
  • Beginnend beim Knoten 0 besucht die Liste jeden Knoten genau einmal und erreicht dann -1. Es gibt keinen Zyklus.

Beispiele

Eingabe
values = [5, 9, 2, 7, 6]next = [2, 3, 4, -1, 1]n = 2
Ausgabe
[5, 2, 6, 7]
Erklärung
Wenn man den Verknüpfungen ab Knoten 0 folgt, besucht man die Knoten 0, 2, 4, 1, 3, sodass die Liste 5, 2, 6, 9, 7 lautet. Der zweitletzte Knoten ist Knoten 1 mit dem Wert 9; ohne ihn lautet die Liste 5, 2, 6, 7. Der Array-Eintrag values[5-2] = 7 ist der letzte Knoten, nicht der zu entfernende.

lock icon+14 versteckte Tests beim Einreichen

challenge icon

Weiterführende Frage

Kannst du den Knoten in einem einzigen Durchlauf finden und entfernen, ohne vorher die Länge zu zählen?

Code zurücksetzen
def removeNthFromEnd(values, next, n):
    # Schreibe hier den Code
Testfälle

Fall 1

Fall 2

Fall 3

Eingabe

values = [5, 9, 2, 7, 6]
next = [2, 3, 4, -1, 1]
n = 2

Erwartet

[5, 2, 6, 7]