Menu
CoddyTech

Sort List

Se te proporciona una lista enlazada simple almacenada en dos arreglos de la misma longitud. El nodo i contiene el valor values[i] y enlaza con el nodo next[i]; -1 indica el final de la lista y la cabeza es el nodo 0. Los nodos no están almacenados en el orden de la lista, y los arreglos también pueden contener nodos sobrantes a los que nunca se llega al recorrer la lista desde el nodo 0. Esos nodos no forman parte de la lista, incluso cuando sus enlaces apuntan a ella.

Ordena la lista de forma no decreciente según el valor y devuelve los valores de sus nodos en ese orden.

Función

sortList(next: integer-array, values: integer-array) → integer-array
nextinteger-array
el índice del nodo al que enlaza cada nodo, o -1 para el último nodo
valuesinteger-array
el valor que contiene cada nodo
Devuelveinteger-array
los valores de los nodos de la lista, de menor a mayor

Restricciones

  • 1 ≤ n ≤ 4000, donde n es la longitud de next y de values.
  • -1000 ≤ values[i] ≤ 1000
  • Cada next[i] es -1 o un índice de nodo de 0 a n-1.
  • Empezando en el nodo 0, la lista llega a -1 sin visitar dos veces ningún nodo.
  • Los nodos a los que no llega el recorrido desde el nodo 0 no forman parte de la lista. Sus entradas next pueden apuntar a cualquier lugar.

Ejemplos

Entrada
next = [3, -1, 4, 2, 1]values = [4, 1, 3, 2, 5]
Salida
[1, 2, 3, 4, 5]
Explicación
El recorrido desde el nodo 0 visita los nodos 0, 3, 2, 4, 1, así que la lista queda 4, 2, 3, 5, 1. Ordenada, queda 1, 2, 3, 4, 5.
challenge icon

Para ir más allá

¿Puedes ordenar volviendo a enlazar los nodos en O(n log n) tiempo, sin copiar los valores?

Restablecer código
def sortList(next, values):
    # Escribe el código aquí

Prueba #1

Prueba #2

Prueba #3

Argumentos

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

Salida Esperada

[1, 2, 3, 4, 5]