Menu
CoddyTech

Remove Nth Node From End of 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 mengakhiri list, dan head-nya adalah node 0. Node-node tersebut tidak disimpan sesuai urutan list, jadi ikuti tautannya.

Hapus node ke-n jika dihitung dari akhir list, dengan node terakhir sebagai node ke-1 dari akhir. Kembalikan nilai node yang tersisa, sesuai urutan list.

Fungsi

removeNthFromEnd(values: integer-array, next: integer-array, n: integer) → integer-array
valuesinteger-array
nilai yang disimpan oleh setiap node
nextinteger-array
indeks node yang ditautkan oleh setiap node, atau -1 untuk node terakhir
ninteger
node yang akan dihapus, dihitung dari akhir, dengan 1 sebagai node terakhir
Mengembalikaninteger-array
nilai yang tersisa sesuai urutan list, kosong ketika satu-satunya node dihapus

Batasan

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

Contoh

Input
values = [5, 9, 2, 7, 6]next = [2, 3, 4, -1, 1]n = 2
Output
[5, 2, 6, 7]
Penjelasan
Dengan mengikuti tautan dari node 0, daftar tersebut terbaca 5, 2, 6, 9, 7. Elemen ke-2 dari akhir adalah 9, di node 1; menghapusnya menyisakan 5, 2, 6, 7.
challenge icon

Pertanyaan lanjutan

Bisakah kamu menemukan dan melepas tautan node dalam satu kali lintasan, tanpa menghitung panjangnya terlebih dahulu?

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

Tes #1

Tes #2

Tes #3

Argumen

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

Output yang diharapkan

[5, 2, 6, 7]