Python程序:查找所有配对按位与的异或和
假设我们有两个数组arr1和arr2。列表的异或和是其所有元素的按位异或。如果列表只有一个元素,则其异或和将是元素本身。现在,考虑列表包含arr1[i] AND arr2[j](按位与)的结果,对于每个索引对(i, j),其中0 <= i < arr1的长度,并且0 <= j < arr2的长度。我们需要找到该列表的异或和。
因此,如果输入类似于arr1 = [5,3,4] arr2 = [2,6],则输出将为0,因为列表为[5 AND 2, 5 AND 6, 3 AND 2, 3 AND 6, 4 AND 2, 4 AND 6] = [0, 4, 2, 2, 0, 4],现在异或和为[0 XOR 4 XOR 2 XOR 2 XOR 0 XOR 4] = 0
为了解决这个问题,我们将遵循以下步骤:
xor1 := 0
xor2 := 0
对于arr1中的每个a,执行:
xor1 := xor1 XOR a
对于arr2中的每个a,执行:
xor2 := xor2 XOR a
返回xor1 AND xor2
示例
让我们看下面的实现以更好地理解
def solve(arr1, arr2): xor1 = 0 xor2 = 0 for a in arr1: xor1 ^= a for a in arr2: xor2 ^= a return xor1 & xor2 arr1 = [5,3,4] arr2 = [2,6] print(solve(arr1, arr2))
输入
[5,3,4], [2,6]
输出
0
广告