Menu
CoddyTech

Palindrome Linked 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.

Gib true zurück, wenn die Werte vom Kopf bis zum Ende genauso gelesen werden wie vom Ende zurück zum Kopf, andernfalls false.

Funktion

isPalindrome(next: integer-array, values: integer-array) → boolean
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ückboolean
wahr, wenn die Liste in beiden Richtungen gleich gelesen wird

Einschränkungen

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

Beispiele

Eingabe
next = [4, 3, -1, 2, 1]values = [3, 4, 3, 1, 1]
Ausgabe
true
Erklärung
Die Verbindungen besuchen die Knoten 0, 4, 1, 3, 2, daher lautet die Liste 3, 1, 4, 1, 3. Die beiden 3er stimmen überein, die beiden 1er stimmen überein, und die 4 in der Mitte hat kein Gegenstück zum Vergleichen.
challenge icon

Weiterführende Frage

Kannst du es in O(L) Zeit mit O(1) zusätzlichem Speicher schaffen?

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

Test #1

Test #2

Test #3

Argumente

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

Erwartete Ausgabe

true