Menu
CoddyTech

Remove Nth Node From End of 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, então siga os links.

Remova o n-ésimo nó contado a partir do fim da lista, sendo o último nó o 1º a partir do fim. Retorne os valores dos nós restantes, na ordem da lista.

Função

removeNthFromEnd(values: integer-array, next: integer-array, n: integer) → integer-array
valuesinteger-array
o valor armazenado por cada nó
nextinteger-array
o índice do nó ao qual cada nó está ligado, ou -1 para o último nó
ninteger
qual nó remover, contando a partir do final, em que 1 é o último nó
Retornainteger-array
os valores restantes na ordem da lista, vazia quando o único nó é removido

Restrições

  • 1 ≤ L ≤ 5000, onde L é o comprimento de values e de next.
  • -100 ≤ values[i] ≤ 100
  • 1 ≤ n ≤ L
  • Cada next[i] é -1 ou um índice de nó de 0 a L-1.
  • A partir do nó 0, a lista visita cada nó exatamente uma vez e então chega a -1. Não há ciclo.

Exemplos

Entrada
values = [5, 9, 2, 7, 6]next = [2, 3, 4, -1, 1]n = 2
Saída
[5, 2, 6, 7]
Explicação
Seguindo os links a partir do nó 0, visitamos os nós 0, 2, 4, 1, 3, então a lista contém 5, 2, 6, 9, 7. O 2º nó a partir do fim é o nó 1, com valor 9, e sem ele a lista contém 5, 2, 6, 7. A entrada do array values[5-2] = 7 é o último nó, não aquele que deve ser removido.

lock icon+14 testes ocultos ao enviar

challenge icon

Para ir além

Você consegue encontrar e desvincular o nó em uma única passagem, sem contar o comprimento primeiro?

Redefinir código
def removeNthFromEnd(values, next, n):
    # Escreva o código aqui
Casos de teste

Caso 1

Caso 2

Caso 3

Entrada

values = [5, 9, 2, 7, 6]
next = [2, 3, 4, -1, 1]
n = 2

Esperado

[5, 2, 6, 7]