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

更新於:2021年10月8日

1K+ 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.