Rumah > pembangunan bahagian belakang > tutorial php > Bitwise XOR bagi Semua Gandingan

Bitwise XOR bagi Semua Gandingan

Patricia Arquette
Lepaskan: 2025-01-16 22:07:12
asal
915 orang telah melayarinya
<code class="language-php"><?php
function xorAllPairings($nums1, $nums2) {
    $m = count($nums1);
    $n = count($nums2);
    $result = 0;

    for ($i = 0; $i < 32; $i++) {
        $count1 = 0;
        $count2 = 0;

        foreach ($nums1 as $num) {
            if (($num >> $i) & 1) {
                $count1++;
            }
        }

        foreach ($nums2 as $num) {
            if (($num >> $i) & 1) {
                $count2++;
            }
        }

        $totalCount = $count1 * $n + $count2 * $m;
        if ($totalCount % 2 != 0) {
            $result |= (1 << $i);
        }
    }

    return $result;
}

// Example 1
$nums1 = [2, 1, 3];
$nums2 = [10, 2, 5, 0];
echo xorAllPairings($nums1, $nums2); // Output: 13

// Example 2
$nums1 = [1, 2];
$nums2 = [3, 4];
echo xorAllPairings($nums1, $nums2); // Output: 0
?></code>
Salin selepas log masuk

Bitwise XOR of All Pairings

  1. XOR Bitwise Semua Gandingan

Kesukaran: Sederhana

Topik: Tatasusunan, Manipulasi Bit

Diberikan dua tatasusunan terindeks 0, nums1 dan nums2, yang mengandungi integer bukan negatif. Tatasusunan nums3 mengandungi XOR bitwise semua gandingan antara nums1 dan nums2 (setiap integer dalam nums1 digandingkan dengan setiap integer dalam nums2 tepat sekali). Kembalikan XOR bitwise semua integer dalam nums3.

Contoh 1:

  • Input: nums1 = [2,1,3], nums2 = [10,2,5,0]
  • Output: 13
  • Penjelasan: Tatasusunan nums3 yang mungkin ialah [8,0,7,2,11,3,4,1,9,1,6,3]. XOR bitwise semua nombor ini ialah 13.

Contoh 2:

  • Input: nums1 = [1,2], nums2 = [3,4]
  • Output: 0
  • Penjelasan: Kemungkinan nums3 ialah [2,5,1,6]. 2 ^ 5 ^ 1 ^ 6 = 0.

Kekangan:

  • 1 ≤ nums1.length, nums2.length ≤ 105
  • 0 ≤ nums1[i], nums2[i] ≤ 109

Petunjuk: Pertimbangkan cara kiraan setiap integer individu mempengaruhi jawapan akhir. Jika nums1 mempunyai panjang m dan nums2 mempunyai panjang n, setiap nombor dalam nums1 diulang n kali dan setiap nombor dalam nums2 diulang m kali dalam jumlah XOR.

Penyelesaian:

Pemerhatian utama ialah operasi XOR adalah bersekutu dan komutatif. Juga, x ^ x == 0. Oleh itu, jika suatu nombor muncul beberapa kali genap dalam jumlah XOR, ia membatalkan dirinya sendiri. Kita hanya perlu mempertimbangkan nombor yang muncul beberapa kali ganjil.

Setiap nombor dalam nums1 muncul n kali dalam jumlah XOR, dan setiap nombor dalam nums2 muncul m kali. Kita boleh melelar melalui bit setiap nombor dan mengira jumlah bilangan kali setiap bit ditetapkan. Jika jumlah kiraan sedikit adalah ganjil, ia menyumbang kepada keputusan XOR akhir.

Kod PHP yang disediakan melaksanakan pendekatan ini dengan cekap. Kerumitan masa ialah O(m n) kerana kita berulang melalui nums1 dan nums2 sekali. Kerumitan ruang ialah O(1) kerana kami menggunakan jumlah ruang tambahan yang tetap.

Atas ialah kandungan terperinci Bitwise XOR bagi Semua Gandingan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan