2134. Pertukaran Minimum untuk Kumpulan Semua 1 Bersama II
Sederhana
Aswapditakrifkan sebagai mengambil duaberbezakedudukan dalam tatasusunan dan menukar nilai di dalamnya.
Tatasusunanbulatanditakrifkan sebagai tatasusunan di mana kita menganggap elemenpertamadan elementerakhirsebagaibersebelahan.
Diberikan nombor tatasusunanpekeliling binari, kembalikanbilangan swap minimum yang diperlukan untuk mengumpulkan semua 1 hadir dalam tatasusunan bersama-sama dimana-mana lokasi.
Contoh 1:
Contoh 2:
Contoh 3:
Kekangan:
Petunjuk:
Penyelesaian:
Untuk menyelesaikan masalah ini, kita boleh ikuti langkah berikut:
Mari kita 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 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.
Hubungi Pautan
Jika anda mendapati siri ini membantu, sila pertimbangkan untuk memberirepositoribintang di GitHub atau berkongsi siaran pada rangkaian sosial kegemaran anda ?. Sokongan anda amat bermakna buat 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!