Rumah >pembangunan bahagian belakang >tutorial php >Bilangan Minimum Penyingkiran untuk Membuat Mountain Array
1671. Bilangan Minimum Penyingkiran untuk Membuat Mountain Array
Kesukaran: Sukar
Topik: Tatasusunan, Carian Binari, Pengaturcaraan Dinamik, Tamak
Anda mungkin ingat bahawa susunan tatasusunan ialah tatasusunan gunung jika dan hanya jika:
Memandangkan nombor tatasusunan integer, kembalikan bilangan minimum elemen untuk dialih keluar untuk menjadikan nombor sebagai tatasusunan gunung.
Contoh 1:
Contoh 2:
Kekangan:
Petunjuk:
Penyelesaian:
Kita boleh menggunakan pendekatan pengaturcaraan dinamik dengan idea mencari urutan gunung maksimum dan bukannya mengira terus elemen untuk dialih keluar. Pendekatan ini adalah berdasarkan kepada mencari dua Turutan Meningkat Terpanjang (LIS) untuk setiap kedudukan dalam tatasusunan: satu pergi kiri-ke-kanan dan satu lagi pergi kanan-ke- kiri. Sebaik sahaja kita mempunyai jujukan gunung yang paling lama mungkin, perbezaan antara panjang tatasusunan asal dan panjang jujukan ini akan memberi kita elemen minimum untuk dialih keluar.
Kenal pasti panjang jujukan yang semakin meningkat:
Kenal pasti panjang jujukan yang semakin berkurang:
Kira panjang gunung maksimum:
Dapatkan penyingkiran minimum:
Mari kita laksanakan penyelesaian ini dalam PHP: 1671. Bilangan Minimum Penyingkiran untuk Membuat Mountain Array
<?php /** * @param Integer[] $nums * @return Integer */ function minimumMountainRemovals($nums) { ... ... ... /** * go to ./solution.php */ } // Example usage $nums1 = [1, 3, 1]; echo minimumMountainRemovals($nums1); // Output: 0 $nums2 = [2, 1, 1, 5, 6, 2, 3, 1]; echo minimumMountainRemovals($nums2); // Output: 3 ?>
Pengiraan LIS Kiri:
Pengiraan LIS Kanan:
Pengiraan Gunung:
Pengiraan Akhir:
Penyelesaian ini memastikan bahawa kami mencari jujukan gunung maksimum dan mengira penyingkiran minimum yang diperlukan untuk mencapai susunan gunung.
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 Bilangan Minimum Penyingkiran untuk Membuat Mountain Array. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!