Menu
CoddyTech

Reverse Linked List

Hai una lista concatenata singola memorizzata nell'array next: il nodo i punta al nodo next[i], -1 termina la lista e la testa è il nodo 0. I nodi non sono memorizzati nell'ordine della lista, quindi segui i collegamenti.

Inverti la lista capovolgendo ogni collegamento, in modo che il vecchio ultimo nodo diventi la testa e il nodo 0 diventi l'ultimo nodo, collegato a -1. Restituisci l'array next aggiornato, che ha la stessa lunghezza dell'input.

Funzione

reverseList(next: integer-array) → integer-array
nextinteger-array
l'indice del nodo a cui è collegato ciascun nodo, oppure -1 per l'ultimo nodo
Restituisceinteger-array
l'array successivo della lista invertita

Vincoli

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

Esempi

Input
next = [1, 2, 3, -1]
Output
[-1, 0, 1, 2]
Spiegazione
La lista è 0 → 1 → 2 → 3. Invertita è 3 → 2 → 1 → 0, quindi il nodo 3 punta a 2, il nodo 2 a 1, il nodo 1 a 0 e il nodo 0 a -1.

lock icon+11 test nascosti all’invio

challenge icon

Per approfondire

Riesci a invertire solo la parte della lista compresa tra la posizione left e la posizione right, lasciando i nodi prima e dopo al loro posto?

Ripristina il codice
def reverseList(next):
    # Scrivi il codice qui
Casi di test

Caso 1

Caso 2

Caso 3

Input

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

Atteso

[-1, 0, 1, 2]