สมมติว่าเรามีอาร์เรย์สองอาร์เรย์ arr1 และ arr2 ผลรวม XOR ของรายการคือ XOR ระดับบิตขององค์ประกอบทั้งหมด หากรายการมีองค์ประกอบเพียงองค์ประกอบเดียว ผลรวม XOR จะเป็นองค์ประกอบนั้นเอง ตอนนี้ ให้พิจารณาว่ารายการมีผลลัพธ์เป็น arr1[i] และ arr2[j] (ระดับบิต AND) สำหรับทุกคู่ดัชนี (i, j) โดยที่ 0 <=i <ความยาวของ arr1 และ 0 <=j <ความยาวของ arr2 เราต้องหาผลรวม XOR ของรายการนั้น
ดังนั้น หากอินพุตเป็นเหมือน arr1 =[5,3,4] arr2 =[2,6] ผลลัพธ์จะเป็น 0 เพราะรายการคือ [5 AND 2, 5 AND 6, 3 AND 2, 3 AND 6 , 4 และ 2, 4 และ 6] =[0, 4, 2, 2, 0, 4] ตอนนี้ผลรวม XOR คือ [0 XOR 4 XOR 2 XOR 2 XOR 0 XOR 4] =0
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
xor1 :=0
-
xor2 :=0
-
สำหรับแต่ละ a ใน arr1 ทำ
-
xor1 :=xor1 XOR ก
-
-
สำหรับแต่ละ a ใน arr2 ทำ
-
xor2 :=xor2 XOR ก
-
-
คืนค่า xor1 และ 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