Menu
CoddyTech

Palindrome Linked 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 o nó inicial é o nó 0. Os nós não estão armazenados na ordem da lista, então siga os ponteiros.

Retorne true se os valores lidos do nó inicial até o final forem iguais aos valores lidos do final de volta ao nó inicial, e false caso contrário.

Função

isPalindrome(next: integer-array, values: integer-array) → boolean
nextinteger-array
o índice do nó ao qual cada nó está conectado, ou -1 para o último nó
valuesinteger-array
o valor armazenado por cada nó
Retornaboolean
verdadeiro se a lista for lida da mesma forma nas duas direções

Restrições

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

Exemplos

Entrada
next = [4, 3, -1, 2, 1]values = [3, 4, 3, 1, 1]
Saída
true
Explicação
Os links visitam os nós 0, 4, 1, 3, 2, então a lista é 3, 1, 4, 1, 3. Os dois 3 correspondem, os dois 1 correspondem, e o 4 no meio não tem um par para comparar.
challenge icon

Para ir além

Você consegue fazer isso em O(L) tempo com O(1) de memória extra?

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

Teste #1

Teste #2

Teste #3

Argumentos

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

Saída Esperada

true