Rumah > Artikel > pembangunan bahagian belakang > Penamat Tatasusunan Minimum
3133. Penamat Tatasusunan Minimum
Kesukaran: Sederhana
Topik: Manipulasi Bit
Anda diberi dua integer n dan x. Anda perlu membina tatasusunan positif nombor integer saiz n di mana untuk setiap 0 <= i < n - 1, nums[i 1] ialah lebih besar daripada nums[i], dan hasil operasi bitwise AND antara semua elemen nums ialah x.
Kembalikan nilai minimum yang mungkin bagi nombor[n - 1].
Contoh 1:
Contoh 2:
Contoh 3:
Kekangan:
Petunjuk:
Penyelesaian:
Kita perlu membina nombor tatasusunan bilangan bulat positif saiz n, di mana setiap elemen berturut-turut adalah lebih besar daripada sebelumnya. Bitwise AND semua elemen dalam nums harus menghasilkan x. Kami diminta untuk mencari nilai minimum yang mungkin bagi nums[n-1].
Berikut ialah pecahan:
Bit Manipulation Insight: Kita boleh perhatikan bahawa nums[i] harus dibina dengan menggabungkan x dengan integer 0, 1, ..., n-1. Ini akan membantu memastikan hasil bitwise AND menghasilkan x kerana kita bermula dengan asas x.
Membina Elemen Tatasusunan: Setiap elemen boleh dianggap sebagai x digabungkan dengan beberapa integer, dan kami menyasarkan untuk mengekalkan bit x utuh. Kami mengisi bit tambahan daripada integer untuk mendapatkan nombor yang semakin meningkat sambil mengekalkan hasil AND sebagai x.
Strategi Penggabungan: Untuk mencari nombor minimum[n-1], kita hanya perlu menggabungkan x dengan n-1. Penggabungan dalam konteks ini bermakna jika sebarang bit dalam x ialah 1, ia kekal 1. Kami menggunakan bit daripada n-1 untuk menambah sebarang bit tambahan yang diperlukan tanpa mengubah bit yang ditetapkan dalam x.
Mari laksanakan penyelesaian ini dalam PHP: 3133. Penamat Tatasusunan Minimum
Explication:
Vérification et réglage des bits :
- On vérifie chaque bit de ans (en partant de x), et si un bit vaut 0 dans ans, on regarde le bit correspondant dans k (qui est n-1).
- Si ce bit dans k est 1, nous définissons le bit dans ans sur 1. Ce processus garantit l'incrément de valeur minimum tout en préservant les bits définis dans x.
Contraintes de boucle :
- Nous parcourons chaque position de bit jusqu'à un maximum calculé (kMaxBit), en nous assurant de couvrir les bits nécessaires à la fois de x et de n.
Résultat :
- La valeur finale de ans est la valeur minimale possible pour nums[n-1] qui satisfait aux conditions.
Complexité:
Cette solution donne les nombres minimum souhaités[n-1] tout en conservant les propriétés requises.
Liens de contact
Si vous avez trouvé cette série utile, pensez à donner une étoile au référentiel sur GitHub ou à partager la publication sur vos réseaux sociaux préférés ?. Votre soutien signifierait beaucoup pour moi !
Si vous souhaitez du contenu plus utile comme celui-ci, n'hésitez pas à me suivre :
Atas ialah kandungan terperinci Penamat Tatasusunan Minimum. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!