Menu
CoddyTech

Reverse Linked List

Recibes una lista enlazada simple almacenada en el array next: el nodo i apunta al nodo next[i], -1 termina la lista y la cabeza es el nodo 0. Los nodos no están almacenados en el orden de la lista, así que sigue los enlaces.

Invierte la lista cambiando la dirección de cada enlace, de modo que el antiguo último nodo se convierta en la cabeza y el nodo 0 se convierta en el último nodo, apuntando a -1. Devuelve el array next actualizado, que tiene la misma longitud que la entrada.

Función

reverseList(next: integer-array) → integer-array
nextinteger-array
el índice del nodo al que se enlaza cada nodo, o -1 para el último nodo
Devuelveinteger-array
el siguiente arreglo de la lista invertida

Restricciones

  • 1 ≤ next.length ≤ 5000
  • Cada next[i] es -1 o un índice de nodo de 0 a next.length-1.
  • Empezando en el nodo 0, la lista visita cada nodo exactamente una vez y después llega a -1. No hay ningún ciclo.

Ejemplos

Entrada
next = [1, 2, 3, -1]
Salida
[-1, 0, 1, 2]
Explicación
La lista es 0 → 1 → 2 → 3. Invertida, es 3 → 2 → 1 → 0, así que el nodo 3 enlaza con 2, el nodo 2 con 1, el nodo 1 con 0 y el nodo 0 con -1.

lock icon+11 pruebas ocultas al enviar

challenge icon

Para ir más allá

¿Puedes invertir solo la parte de la lista entre la posición left y la posición right, y dejar los nodos anteriores y posteriores en su lugar?

Restablecer código
def reverseList(next):
    # Escribe el código aquí
Casos de prueba

Caso 1

Caso 2

Caso 3

Entrada

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

Esperado

[-1, 0, 1, 2]