<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>
難度:中
主題:陣列、位元操作
給定兩個 0 索引數組,nums1
和 nums2
,包含非負整數。 陣列 nums3
包含 nums1
和 nums2
之間所有配對的位元異或(nums1
中的每個整數與 nums2
中的每個整數恰好配對一次)。 傳回 nums3
.
範例1:
nums1
= [2,1,3], nums2
= [10,2,5,0]nums3
陣列是 [8,0,7,2,11,3,4,1,9,1,6,3]。所有這些數字的按位異或是 13。 範例2:
nums1
= [1,2], nums2
= [3,4]nums3
是[2,5,1,6]。 2 ^ 5 ^ 1 ^ 6 = 0.約束:
nums1.length
,nums2.length
≤ 105
nums1[i]
,nums2[i]
≤ 109
提示:考慮每個整數的計數如何影響最終答案。 如果nums1
的長度為m
並且nums2
的長度為n
,則在異或和中,nums1
中的每個數字將重複n
次,並且nums2
中的每個數字會重複m
次。 🎜>
解:
關鍵的觀察結果是 XOR 運算是關聯和交換的。 另外,。因此,如果一個數字在異或和中出現偶數次,它就會自行抵消。 我們只需要考慮出現奇數次的數字。 x ^ x == 0
中的每個數字在異或和中出現 nums1
次,n
中的每個數字出現 nums2
次。 我們可以迭代每個數字的位元併計算每個位元被設定的總次數。如果某位的總數為奇數,則它會影響最終的異或結果。 m
和 nums1
一次。空間複雜度為 O(1),因為我們使用恆定量的額外空間。 nums2
以上是所有配對的位元異或的詳細內容。更多資訊請關注PHP中文網其他相關文章!