Menu
CoddyTech

Middle of the 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 tidak disimpan sesuai urutan list, jadi ikuti tautannya.

Kembalikan nilai node tengah. Jika list memiliki jumlah node genap, ada dua node tengah. Kembalikan nilai node kedua.

Fungsi

middleNode(values: integer-array, next: integer-array) → integer
valuesinteger-array
nilai yang disimpan oleh setiap node
nextinteger-array
indeks node yang ditautkan oleh setiap node, atau -1 untuk node terakhir
Mengembalikaninteger
nilai node tengah, yaitu node tengah kedua saat panjangnya genap

Batasan

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

Contoh

Input
values = [4, 9, 2, 7, 5]next = [3, -1, 1, 4, 2]
Output
5
Penjelasan
Dengan mengikuti tautan dari node 0, kamu mengunjungi node 0, 3, 4, 2, 1, yang nilainya adalah 4, 7, 5, 2, 9. Bagian tengahnya adalah node 4, dengan nilai 5, bukan entri tengah array values[2] = 2.
challenge icon

Pertanyaan lanjutan

Bisakah kamu mengembalikan node yang berada sepertiga dari awal list dalam satu kali lintasan? Seberapa cepat masing-masing pointer bergerak, dan di mana kamu akan berhenti?

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

Tes #1

Tes #2

Tes #3

Argumen

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

Output yang diharapkan

5