Menu
CoddyTech

Palindrome Linked List

Kamu mendapatkan singly linked list yang disimpan dalam dua array dengan panjang yang sama. Node i menyimpan nilai values[i] dan terhubung ke node next[i], -1 menandai akhir list, dan head adalah node 0. Node-node tersebut tidak disimpan sesuai urutan list, jadi ikuti tautannya.

Kembalikan true jika nilai yang dibaca dari head sampai akhir sama dengan nilai yang dibaca dari akhir kembali ke head, dan false jika tidak.

Fungsi

isPalindrome(next: integer-array, values: integer-array) → boolean
nextinteger-array
indeks node yang ditautkan oleh setiap node, atau -1 untuk node terakhir
valuesinteger-array
nilai yang disimpan oleh setiap node
Mengembalikanboolean
true jika list terbaca sama dari kedua arah

Batasan

  • 1 ≤ L ≤ 5000, dengan L adalah panjang next dan values.
  • -100 ≤ values[i] ≤ 100
  • Setiap next[i] adalah -1 atau indeks simpul dari 0 hingga L-1.
  • Mulai dari node 0, list mengunjungi setiap node tepat satu kali lalu mencapai -1. Tidak ada siklus.

Contoh

Input
next = [4, 3, -1, 2, 1]values = [3, 4, 3, 1, 1]
Output
true
Penjelasan
Tautan mengunjungi node 0, 4, 1, 3, 2, jadi list-nya terbaca 3, 1, 4, 1, 3. Kedua angka 3 cocok, kedua angka 1 cocok, dan 4 di tengah tidak memiliki pasangan untuk diperiksa.
challenge icon

Pertanyaan lanjutan

Bisakah kamu melakukannya dalam waktu O(L) dengan memori tambahan O(1)?

Reset kode
def isPalindrome(next, values):
    # Tulis kodemu di sini

Tes #1

Tes #2

Tes #3

Argumen

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

Output yang diharapkan

true