首页 > 后端开发 > 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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板