首頁 > 後端開發 > php教程 > 所有配對的位元異或

所有配對的位元異或

Patricia Arquette
發布: 2025-01-16 22:07:12
原創
911 人瀏覽過
<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>
登入後複製

Bitwise XOR of All Pairings

  1. 所有配對的位元異或

難度:

主題:陣列、位元操作

給定兩個 0 索引數組,nums1nums2,包含非負整數。 陣列 nums3 包含 nums1nums2 之間所有配對的位元異或(nums1 中的每個整數與 nums2 中的每個整數恰好配對一次)。 傳回 nums3.

中所有整數的位元異或

範例1:

  • 輸入: nums1 = [2,1,3], nums2 = [10,2,5,0]
  • 輸出: 13
  • 解釋: 可能的 nums3 陣列是 [8,0,7,2,11,3,4,1,9,1,6,3]。所有這些數字的按位異或是 13。

範例2:

  • 輸入: nums1 = [1,2], nums2 = [3,4]
  • 輸出: 0
  • 解釋:可能的nums3是[2,5,1,6]。 2 ^ 5 ^ 1 ^ 6 = 0.

約束:

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

提示:考慮每個整數的計數如何影響最終答案。 如果nums1 的長度為m 並且nums2 的長度為n,則在異或和中,nums1 中的每個數字將重複n 次,並且nums2 中的每個數字會重複m 次。 🎜>

解:

關鍵的觀察結果是 XOR 運算是關聯和交換的。 另外,

。因此,如果一個數字在異或和中出現偶數次,它就會自行抵消。 我們只需要考慮出現奇數次的數字。 x ^ x == 0

中的每個數字在異或和中出現 nums1 次,n 中的每個數字出現 nums2 次。 我們可以迭代每個數字的位元併計算每個位元被設定的總次數。如果某位的總數為奇數,則它會影響最終的異或結果。 m

提供的 PHP 程式碼有效地實作了這種方法。 時間複雜度是 O(m n),因為我們迭代

nums1 一次。空間複雜度為 O(1),因為我們使用恆定量的額外空間。 nums2

以上是所有配對的位元異或的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板