Menu
CoddyTech

Palindrome Linked List

Otrzymujesz jednokierunkową listę połączoną zapisaną w dwóch tablicach o tej samej długości. Węzeł i przechowuje wartość values[i] i wskazuje na węzeł next[i], -1 oznacza koniec listy, a głową jest węzeł 0. Węzły nie są zapisane w kolejności listy, więc podążaj za odnośnikami.

Zwróć true, jeśli wartości odczytane od głowy do końca są takie same jak odczytane od końca do głowy, a w przeciwnym razie false.

Funkcja

isPalindrome(next: integer-array, values: integer-array) → boolean
nextinteger-array
indeks węzła, do którego prowadzi połączenie z każdego węzła, lub -1 dla ostatniego węzła
valuesinteger-array
wartość przechowywana w każdym węźle
Zwracaboolean
true, jeśli listę odczytuje się tak samo w obu kierunkach

Ograniczenia

  • 1 ≤ L ≤ 5000, gdzie L jest długością next i values.
  • -100 ≤ values[i] ≤ 100
  • Każde next[i] ma wartość -1 lub indeks węzła od 0 do L-1.
  • Rozpoczynając od węzła 0, lista odwiedza każdy węzeł dokładnie raz, a następnie dociera do -1. Nie ma cyklu.

Przykłady

Wejście
next = [4, 3, -1, 2, 1]values = [3, 4, 3, 1, 1]
Wyjście
true
Wyjaśnienie
Łącza odwiedzają węzły 0, 4, 1, 3, 2, więc lista ma postać 3, 1, 4, 1, 3. Obie trójki pasują do siebie, obie jedynki pasują do siebie, a 4 pośrodku nie ma pary do sprawdzenia.
challenge icon

Pytanie dodatkowe

Czy potrafisz zrobić to w czasie O(L) i przy użyciu O(1) dodatkowej pamięci?

Zresetuj kod
def isPalindrome(next, values):
    # Wpisz tutaj kod

Test #1

Test #2

Test #3

Argumenty

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

Oczekiwany wynik

true