Rumah >pembangunan bahagian belakang >tutorial php >Padamkan Nod Daripada Senarai Terpaut Hadir dalam Tatasusunan
3217. Padamkan Nod Daripada Senarai Terpaut Hadir dalam Tatasusunan
Kesukaran: Sederhana
Topik: Tatasusunan, Jadual Hash, Senarai Terpaut
Anda diberi tatasusunan nombor integer dan ketua senarai terpaut. Kembalikan kepala senarai terpaut yang diubah suai selepas mengalih keluar semua nod daripada senarai terpaut yang mempunyai nilai yang wujud dalam nums.
Contoh 1:
Contoh 2:
Contoh 3:
Kekangan:
Petunjuk:
Penyelesaian:
Kita perlu merentasi senarai terpaut dan mengalih keluar sebarang nod yang mempunyai nilai yang terdapat dalam nombor tatasusunan.
Mari laksanakan penyelesaian ini dalam PHP: 3217. Padamkan Nod Daripada Senarai Terpaut Hadir dalam Tatasusunan
val = $val; $this->next = $next; } } class Solution { /** * @param Integer[] $nums * @param ListNode $head * @return ListNode */ function removeElements($head, $nums) { ... ... ... /** * go to ./solution.php */ } } // Example usage: // Linked List: 1 -> 2 -> 3 -> 4 -> 5 $head = new ListNode(1); $head->next = new ListNode(2); $head->next->next = new ListNode(3); $head->next->next->next = new ListNode(4); $head->next->next->next->next = new ListNode(5); // Array nums: [1, 2, 3] $nums = [1, 2, 3]; $solution = new Solution(); $result = $solution->removeElements($head, $nums); // Function to print the linked list function printList($node) { while ($node !== null) { echo $node->val . " "; $node = $node->next; } } // Print the resulting linked list printList($result); // Output: 4 5 ?>Penjelasan:
removeElements($head, $nums):
- Kami mula-mula menukar nombor kepada set cincang ($numSet = array_flip($nums);) untuk carian pantas.
- Nod tiruan dibuat dan dipautkan ke kepala senarai. Ini membantu memudahkan kes tepi seperti mengeluarkan nod kepala.
- Penunjuk sebelumnya menjejaki nod sebelum yang semasa, membolehkan kami mengalih keluar nod semasa dengan melangkaunya dalam senarai.
- Untuk setiap nod, kami menyemak sama ada nilainya dalam numSet. Jika ya, kami mengalih keluarnya dengan melaraskan penuding sebelumnya->seterusnya untuk melangkau nod semasa.
Kes Tepi:
- Jika nod kepala perlu dialih keluar, nod tiruan memastikan kepala boleh dikeluarkan dengan bersih dan masih mengembalikan senarai yang betul.
- Mengendalikan kes di mana berbilang nod berturut-turut perlu dialih keluar.
Kerumitan:
- Kerumitan Masa: O(n), dengan n ialah bilangan nod dalam senarai terpaut. Kami melawat setiap nod sekali. Menukar nombor kepada set memerlukan O(m), dengan m ialah saiz nombor.
- Kerumitan Ruang: O(m) untuk menyimpan set nombor.
Contoh Panduan:
Untuk nombor input = [1, 2, 3] dan kepala = [1, 2, 3, 4, 5], algoritma akan:
Senarai terpaut yang terhasil ialah [4, 5].
Pautan Kenalan
Jika anda mendapati siri ini membantu, sila pertimbangkan untuk memberi repositori bintang di GitHub atau berkongsi siaran pada rangkaian sosial kegemaran anda ?. Sokongan anda amat bermakna bagi saya!
Jika anda mahukan kandungan yang lebih berguna seperti ini, sila ikuti saya:
Atas ialah kandungan terperinci Padamkan Nod Daripada Senarai Terpaut Hadir dalam Tatasusunan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!