3011. Cari jika Tatasusunan Boleh Diisih
Kesukaran: Sederhana
Topik: Tatasusunan, Manipulasi Bit, Isih
Anda diberi 0-diindeks tatasusunan positif nombor integer.
Dalam satu operasi, anda boleh menukar mana-mana dua bersebelahan elemen jika mereka mempunyai sama bilangan bit set1. Anda dibenarkan melakukan operasi ini sebarang bilangan kali (termasuk sifar).
Kembalikan benar jika anda boleh mengisih tatasusunan, jika tidak, kembalikan palsu.
Contoh 1:
Contoh 2:
Contoh 3:
Contoh 4:
Kekangan:
Petunjuk:
Penyelesaian:
Kita perlu menentukan sama ada tatasusunan boleh diisih dengan hanya menukar elemen bersebelahan yang mempunyai bilangan bit set yang sama dalam perwakilan binarinya. Inilah rancangannya:
Pemerhatian Utama: Operasi membenarkan kami menukar elemen bersebelahan hanya jika ia mempunyai bilangan bit set yang sama. Ini mengehadkan pertukaran merentas elemen dengan bilangan bit set yang berbeza.
Rancang:
Langkah:
Mari kita laksanakan penyelesaian ini dalam PHP: 3011. Cari jika Tatasusunan Boleh Diisih
Penjelasan:
- Fungsi countSetBits: Mengira bilangan set bit dalam nombor menggunakan operasi bitwise.
- Elemen Pengumpulan: bitGroups ialah tatasusunan bersekutu di mana setiap kekunci mewakili kiraan bit yang ditetapkan dan setiap nilai ialah tatasusunan nombor dengan bit set sebanyak itu.
Isih dan Bina Semula:
- Kami mengulangi nombor kepada kumpulan elemen mengikut kiraan bit yang ditetapkan.
- Kami mengisih setiap kumpulan secara berasingan.
- Kami kemudian membina semula tatasusunan dengan memasukkan setiap elemen kumpulan yang diisih dalam susunan asalnya.
- Akhir sekali, kami menyemak sama ada tatasusunan yang dibina semula diisih dalam susunan tidak menurun. Jika ya, kembalikan benar; jika tidak, pulangkan palsu.
Perbandingan Akhir: Bandingkan tatasusunan yang dibina semula dengan versi nombor yang diisih sepenuhnya. Jika ia sepadan, kembalikan benar; jika tidak, pulangkan palsu.
Analisis Kerumitan
Penyelesaian ini memastikan bahawa kami hanya menukar elemen bersebelahan dengan kiraan bit set yang sama, mencapai susunan yang diisih jika boleh.
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:
Set Bit Set bit merujuk kepada bit dalam perwakilan binari nombor yang mempunyai nilai 1. ↩
Atas ialah kandungan terperinci Cari jika Tatasusunan Boleh Diisih. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!