1769. Bilangan Operasi Minimum untuk Mengalihkan Semua Bola ke Setiap Kotak
Kesukaran: Sederhana
Topik: Tatasusunan, Rentetan, Jumlah Awalan
Anda mempunyai n kotak. Anda diberi kotak rentetan binari dengan panjang n, dengan kotak[i] ialah '0' jika kotak ith kosong dan '1' jika mengandungi satu bola.
Dalam satu operasi, anda boleh memindahkan satu bola dari kotak ke kotak bersebelahan. Kotak i bersebelahan dengan kotak j jika abs(i - j) == 1. Ambil perhatian bahawa selepas berbuat demikian, mungkin terdapat lebih daripada satu bola dalam beberapa kotak.
Kembalikan jawapan tatasusunan saiz n, dengan jawapan[i] ialah minimum bilangan operasi yang diperlukan untuk memindahkan semua bola ke kotak ike.
Setiap jawapan[i] dikira dengan mengambil kira keadaan awal kotak.
Contoh 1:
Contoh 2:
Kekangan:
Petunjuk:
Penyelesaian:
Kami boleh menggunakan pendekatan jumlah awalan yang membolehkan kami mengira bilangan minimum operasi yang diperlukan untuk memindahkan semua bola ke setiap kotak tanpa mensimulasikan setiap operasi secara eksplisit.
Mari laksanakan penyelesaian ini dalam PHP: 1769. Bilangan Minimum Operasi untuk Mengalihkan Semua Bola ke Setiap Kotak
<?php /** * @param String $boxes * @return Integer[] */ function minOperations($boxes) { ... ... ... /** * go to ./solution.php */ } // Example usage: $boxes = "110"; print_r(minOperations($boxes)); // Output: [1,1,3] $boxes = "001011"; print_r(minOperations($boxes)); // Output: [11,8,5,4,3,4] ?> <h3> Penjelasan: </h3> <ol> <li> <strong>Hantar kiri ke kanan</strong>: Kami mengira jumlah bilangan operasi yang diperlukan untuk membawa semua bola dari sebelah kiri ke kotak semasa. Untuk setiap bola yang ditemui ('1'), kami mengemas kini jumlah bilangan pergerakan.</li> <li> <strong>Hantar kanan ke kiri</strong>: Sama seperti hantaran kiri ke kanan, tetapi kami mengira bilangan operasi untuk mengalihkan bola dari sebelah kanan ke kotak semasa.</li> <li>Jumlah operasi untuk setiap kotak ialah jumlah pergerakan dari hantaran kiri dan kanan.</li> </ol> <h3> Contoh Panduan: </h3> <h4> Contoh 1: </h4> <pre class="brush:php;toolbar:false">$boxes = "110"; print_r(minOperations($boxes));
Output:
Array ( [0] => 1 [1] => 1 [2] => 3 )
$boxes = "001011"; print_r(minOperations($boxes));
Output:
Array ( [0] => 11 [1] => 8 [2] => 5 [3] => 4 [4] => 3 [5] => 4 )
Penyelesaian ini mengira bilangan operasi minimum untuk setiap kotak dengan cekap menggunakan teknik jumlah awalan.
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 Operasi Minimum untuk Mengalihkan Semua Bola ke Setiap Kotak. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!