XOR Maksimum untuk Setiap Pertanyaan
1829. XOR Maksimum untuk Setiap Pertanyaan
Kesukaran: Sederhana
Topik: Tatasusunan, Manipulasi Bit, Jumlah Awalan
Anda diberi diisih nombor tatasusunan bagi n integer bukan negatif dan integer maximumBit. Anda mahu melaksanakan pertanyaan berikut n kali:
- Cari integer bukan negatif k < 2maximumBit supaya nums[0] XOR nums[1] XOR ... XOR nums[nums.length-1] XOR k ialah maksimum. k ialah jawapan kepada pertanyaan ith.
- Alih keluar elemen terakhir daripada nombor tatasusunan semasa.
Kembalikan jawapan tatasusunan, dengan jawapan[i] ialah jawapan kepada pertanyaan ike.
Contoh 1:
- Input: nums = [0,1,1,3], maximumBit = 2
- Output: [0,3,2,3]
-
Penjelasan: Pertanyaan dijawab seperti berikut:
- 1stpertanyaan pertama: nums = [0,1,1,3], k = 0 sejak 0 XOR 1 XOR 1 XOR 3 XOR 0 = 3.
- 2nd pertanyaan: nums = [0,1,1], k = 3 sejak 0 XOR 1 XOR 1 XOR 3 = 3.
- 3rd pertanyaan: nums = [0,1], k = 2 sejak 0 XOR 1 XOR 2 = 3.
- 4th pertanyaan: nums = [0], k = 3 sejak 0 XOR 3 = 3.
Contoh 2:
- Input: nums = [2,3,4,7], maximumBit = 3
- Output: [5,2,6,5]
-
Penjelasan: Pertanyaan dijawab seperti berikut:
- 1stpertanyaan pertama: nums = [2,3,4,7], k = 5 sejak 2 XOR 3 XOR 4 XOR 7 XOR 5 = 7.
- 2nd pertanyaan: nums = [2,3,4], k = 2 sejak 2 XOR 3 XOR 4 XOR 2 = 7.
- 3rd pertanyaan: nums = [2,3], k = 6 sejak 2 XOR 3 XOR 6 = 7.
- 4th pertanyaan: nums = [2], k = 5 sejak 2 XOR 5 = 7.
Contoh 3:
- Input: nombor = [0,1,2,2,5,7], maksimumBit = 3
- Output: [4,3,6,4,6,7]
Kekangan:
- bilangan panjang == n
- 1 <= n <= 105
- 1 <= maximumBit <= 20
- 0 <= angka[i] < 2maksimumBit
- nums diisih dalam susunan menaik.
Petunjuk:
- Perhatikan bahawa keputusan XOR maksimum yang mungkin adalah sentiasa 2(Bit maksimum) - 1
- Jadi jawapan untuk awalan ialah XOR awalan itu XORed dengan 2(maksimumBit)-1
Penyelesaian:
Kita perlu mengira XOR unsur dalam tatasusunan dengan cekap dan memaksimumkan hasilnya menggunakan nilai k supaya k kurang daripada 2^maximumBit. Berikut ialah pendekatan untuk menyelesaikan masalah ini:
Pemerhatian dan Pendekatan
Memaksimumkan XOR:
Nombor maksimum yang boleh kita XOR dengan sebarang jumlah awalan untuk bit maksimumBit ialah ( 2^{text{maximumBit}} - 1 ). Ini kerana XORing dengan nombor semua 1s (iaitu, 111...1 dalam binari) akan sentiasa memaksimumkan hasil.Pengiraan XOR Awalan:
Daripada mengira semula XOR untuk setiap pertanyaan, kita boleh mengekalkan XOR terkumpul untuk keseluruhan tatasusunan. Memandangkan XOR mempunyai sifat A XOR B XOR B = A, mengalih keluar elemen terakhir daripada tatasusunan boleh dicapai dengan XOR mengeluarkan elemen itu daripada XOR terkumpul.-
Algoritma:
- Kira XOR semua elemen dalam nombor pada mulanya. Jom panggil currentXOR ini.
- Untuk setiap pertanyaan (dari yang terakhir hingga yang pertama):
- Kira nilai optimum k untuk pertanyaan itu dengan XORing currentXOR dengan maxNum dengan maxNum = 2^maximumBit - 1.
- Lampirkan k pada senarai keputusan.
- Alih keluar elemen terakhir daripada nums dengan XORing keluar daripada currentXOR.
- Senarai keputusan akan mengandungi jawapan dalam susunan terbalik, jadi terbalikkannya pada penghujungnya.
Mari laksanakan penyelesaian ini dalam PHP: 1829. XOR Maksimum untuk Setiap Pertanyaan
Penjelasan:
Kira maxNum:
- maxNum dikira sebagai 2^maximumBit - 1, iaitu nombor dengan semua 1 dalam binari untuk panjang bit yang ditentukan.
Pengiraan XOR Awal:
- Kami XOR semua elemen dalam nombor untuk mendapatkan XOR terkumpul (XOR semasa), mewakili XOR semua nombor dalam tatasusunan.
Lelaran Ke Belakang:
- Kami bermula dari elemen terakhir dalam nombor dan mengira XOR maksimum untuk setiap langkah:
- currentXOR ^ maxNum memberikan k maksimum untuk keadaan semasa.
- Lampirkan k untuk menjawab.
- Kami kemudian XOR elemen terakhir nombor dengan currentXOR untuk "mengalihkannya" daripada jumlah XOR untuk lelaran seterusnya.
Kembalikan Jawapan:
- Memandangkan kami memproses senarai secara terbalik, jawapan akan mengandungi nilai dalam susunan terbalik, jadi senarai akhir sudah disusun dengan betul untuk keperluan kami.
Analisis Kerumitan
- Kerumitan Masa: O(n), kerana kita mengira XOR awal dalam O(n) dan setiap pertanyaan diproses dalam masa yang tetap.
- Kerumitan Angkasa: O(n), untuk menyimpan jawapan.
Kod ini cekap dan harus mengendalikan had atas kekangan dengan baik.
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:
- GitHub
Atas ialah kandungan terperinci XOR Maksimum untuk Setiap Pertanyaan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











JWT adalah standard terbuka berdasarkan JSON, yang digunakan untuk menghantar maklumat secara selamat antara pihak, terutamanya untuk pengesahan identiti dan pertukaran maklumat. 1. JWT terdiri daripada tiga bahagian: header, muatan dan tandatangan. 2. Prinsip kerja JWT termasuk tiga langkah: menjana JWT, mengesahkan JWT dan muatan parsing. 3. Apabila menggunakan JWT untuk pengesahan di PHP, JWT boleh dijana dan disahkan, dan peranan pengguna dan maklumat kebenaran boleh dimasukkan dalam penggunaan lanjutan. 4. Kesilapan umum termasuk kegagalan pengesahan tandatangan, tamat tempoh, dan muatan besar. Kemahiran penyahpepijatan termasuk menggunakan alat debugging dan pembalakan. 5. Pengoptimuman prestasi dan amalan terbaik termasuk menggunakan algoritma tandatangan yang sesuai, menetapkan tempoh kesahihan dengan munasabah,

Sesi rampasan boleh dicapai melalui langkah -langkah berikut: 1. Dapatkan ID Sesi, 2. Gunakan ID Sesi, 3. Simpan sesi aktif. Kaedah untuk mengelakkan rampasan sesi dalam PHP termasuk: 1. Gunakan fungsi Sesi_Regenerate_ID () untuk menjana semula ID Sesi, 2. Data sesi stor melalui pangkalan data, 3.

Prinsip reka bentuk Restapi termasuk definisi sumber, reka bentuk URI, penggunaan kaedah HTTP, penggunaan kod status, kawalan versi, dan benci. 1. Sumber harus diwakili oleh kata nama dan dikekalkan pada hierarki. 2. Kaedah HTTP harus mematuhi semantik mereka, seperti GET digunakan untuk mendapatkan sumber. 3. Kod status hendaklah digunakan dengan betul, seperti 404 bermakna sumber tidak wujud. 4. Kawalan versi boleh dilaksanakan melalui URI atau header. 5. Boots Operasi Pelanggan Hateoas melalui pautan sebagai tindak balas.

Dalam PHP, pengendalian pengecualian dicapai melalui percubaan, menangkap, akhirnya, dan membuang kata kunci. 1) blok percubaan mengelilingi kod yang boleh membuang pengecualian; 2) Blok tangkapan mengendalikan pengecualian; 3) Akhirnya Blok memastikan bahawa kod itu sentiasa dilaksanakan; 4) Lemparan digunakan untuk membuang pengecualian secara manual. Mekanisme ini membantu meningkatkan keteguhan dan mengekalkan kod anda.

Fungsi utama kelas tanpa nama dalam PHP adalah untuk membuat objek satu kali. 1. Kelas tanpa nama membenarkan kelas tanpa nama ditakrifkan secara langsung dalam kod, yang sesuai untuk keperluan sementara. 2. Mereka boleh mewarisi kelas atau melaksanakan antara muka untuk meningkatkan fleksibiliti. 3. Beri perhatian kepada prestasi dan kebolehbacaan kod apabila menggunakannya, dan elakkan berulang kali menentukan kelas tanpa nama yang sama.

Dalam PHP, perbezaan antara termasuk, memerlukan, termasuk_once, memerlukan_once adalah: 1) termasuk menghasilkan amaran dan terus melaksanakan, 2) memerlukan menghasilkan ralat maut dan berhenti pelaksanaan, 3) termasuk_once dan memerlukan_once mencegah kemasukan berulang. Pilihan fungsi ini bergantung kepada kepentingan fail dan sama ada perlu untuk mencegah kemasukan pendua. Penggunaan rasional dapat meningkatkan kebolehbacaan dan pemeliharaan kod.

Terdapat empat jenis kesilapan utama dalam PHP: 1.Notice: yang paling sedikit, tidak akan mengganggu program, seperti mengakses pembolehubah yang tidak ditentukan; 2. Amaran: Serius daripada notis, tidak akan menamatkan program, seperti tidak mengandungi fail; 3. FatalError: Yang paling serius, akan menamatkan program ini, seperti tidak memanggil fungsi; 4. ParseError: Kesalahan sintaks, akan menghalang program daripada dilaksanakan, seperti lupa untuk menambah tag akhir.

PHP dan Python masing -masing mempunyai kelebihan mereka sendiri, dan memilih mengikut keperluan projek. 1.PHP sesuai untuk pembangunan web, terutamanya untuk pembangunan pesat dan penyelenggaraan laman web. 2. Python sesuai untuk sains data, pembelajaran mesin dan kecerdasan buatan, dengan sintaks ringkas dan sesuai untuk pemula.
