Menu
CoddyTech

Palindrome Linked List

Ti viene fornita una lista concatenata singolarmente memorizzata in due array della stessa lunghezza. Il nodo i contiene il valore values[i] e punta al nodo next[i]; -1 indica la fine della lista e la testa è il nodo 0. I nodi non sono memorizzati nell’ordine della lista, quindi segui i collegamenti.

Restituisci true se i valori letti dalla testa alla fine sono uguali a quelli letti dalla fine alla testa, e false altrimenti.

Funzione

isPalindrome(next: integer-array, values: integer-array) → boolean
nextinteger-array
l'indice del nodo a cui è collegato ciascun nodo, oppure -1 per l'ultimo nodo
valuesinteger-array
il valore contenuto in ciascun nodo
Restituisceboolean
vero se la lista si legge allo stesso modo in entrambe le direzioni

Vincoli

  • 1 ≤ L ≤ 5000, dove L è la lunghezza di next e di values.
  • -100 ≤ values[i] ≤ 100
  • Ogni next[i] è -1 oppure un indice di nodo da 0 a L-1.
  • Partendo dal nodo 0, la lista visita ogni nodo esattamente una volta e poi raggiunge -1. Non c'è alcun ciclo.

Esempi

Input
next = [4, 3, -1, 2, 1]values = [3, 4, 3, 1, 1]
Output
true
Spiegazione
I collegamenti visitano i nodi 0, 4, 1, 3, 2, quindi la lista è 3, 1, 4, 1, 3. I due 3 corrispondono, i due 1 corrispondono e il 4 al centro non ha un elemento corrispondente da controllare.
challenge icon

Per approfondire

Riesci a farlo in O(L) in tempo con O(1) memoria aggiuntiva?

Ripristina il codice
def isPalindrome(next, values):
    # Scrivi il codice qui

Test #1

Test #2

Test #3

Argomenti

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

Output atteso

true