2134. Pertukaran Minimum untuk Kumpulan Semua 1 Bersama II
Sederhana
Pertukaran ditakrifkan sebagai mengambil dua kedudukan berbeza dalam tatasusunan dan menukar nilai di dalamnya.
TatasusunanSatu tatasusunan bulatan ditakrifkan sebagai tatasusunan di mana kita menganggap elemen pertama dan elemen terakhir menjadi bersebelahan.
Memandangkan pekeliling binari nombor tatasusunan, kembalikan bilangan swap minimum yang diperlukan untuk mengumpulkan semua 1 hadir dalam tatasusunan bersama-sama di mana-mana lokasi.
Contoh 1:
Contoh 2:
Contoh 3:
Kekangan:
Petunjuk:
Penyelesaian:
Untuk menyelesaikan masalah ini, kita boleh ikuti langkah berikut:
Mari laksanakan penyelesaian ini dalam PHP: 2134. Pertukaran Minimum untuk Kumpulan Semua 1 Bersama II
Penjelasan:
- Kira Jumlah Bilangan 1s: Kira jumlah bilangan 1s dalam tatasusunan asal.
- Lanjutkan Tatasusunan: Gabungkan tatasusunan asal kepada dirinya sendiri untuk mengendalikan sifat bulat.
- Tetingkap Permulaan: Kira bilangan 0s dalam tetingkap awal bersaiz sama dengan jumlah bilangan 1s.
- Tetingkap Gelongsor: Luncurkan tetingkap merentasi tatasusunan lanjutan. Untuk setiap kedudukan baharu, kemas kini kiraan 0s berdasarkan elemen masuk dan keluar dari tetingkap.
- Cari Minimum: Jejaki bilangan minimum 0 yang ditemui, yang sepadan dengan bilangan swap minimum yang diperlukan.
Penyelesaian ini mengendalikan tatasusunan bulat dengan cekap dengan mengubahnya menjadi masalah linear dan menggunakan teknik tetingkap gelongsor untuk mengekalkan kiraan larian 0s dalam setiap tetingkap bersaiz sama dengan jumlah bilangan 1s.
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 inimum Bertukar kepada Kumpulan Semua Bersama II. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!