Menu
CoddyTech

Sort List

Você recebe uma lista simplesmente encadeada armazenada em dois arrays de mesmo tamanho. O nó i contém o valor values[i] e aponta para o nó next[i], -1 encerra a lista, e a cabeça é o nó 0. Os nós não estão armazenados na ordem da lista, e os arrays também podem conter nós restantes que nunca são alcançados ao percorrer a partir do nó 0. Eles não fazem parte da lista, mesmo quando seus links apontam para dentro dela.

Ordene a lista em ordem não decrescente de valor e retorne os valores dos seus nós nessa ordem.

Função

sortList(next: integer-array, values: integer-array) → integer-array
nextinteger-array
o índice do nó ao qual cada nó está ligado, ou -1 para o último nó
valuesinteger-array
o valor armazenado por cada nó
Retornainteger-array
os valores dos nós da lista, do menor para o maior

Restrições

  • 1 ≤ n ≤ 4000, onde n é o comprimento de next e de values.
  • -1000 ≤ values[i] ≤ 1000
  • Cada next[i] é -1 ou um índice de nó de 0 a n-1.
  • Começando no nó 0, a lista chega a -1 sem visitar um nó duas vezes.
  • Nós que a travessia a partir do nó 0 não alcança não fazem parte da lista. Suas entradas next podem apontar para qualquer lugar.

Exemplos

Entrada
next = [3, -1, 4, 2, 1]values = [4, 1, 3, 2, 5]
Saída
[1, 2, 3, 4, 5]
Explicação
O percurso a partir do nó 0 visita os nós 0, 3, 2, 4, 1, então a lista fica 4, 2, 3, 5, 1. Ordenada, ela fica 1, 2, 3, 4, 5.
challenge icon

Para ir além

Você consegue ordenar religando os nós em O(n log n) de tempo, sem copiar os valores para fora?

Redefinir código
def sortList(next, values):
    # Escreva o código aqui

Teste #1

Teste #2

Teste #3

Argumentos

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

Saída Esperada

[1, 2, 3, 4, 5]