สมมติว่าเรามีอาร์เรย์ A ในอาร์เรย์นี้มีตัวเลขที่แตกต่างกันซึ่งเกิดขึ้นสองครั้ง แต่มีเพียงตัวเลขเดียวที่เกิดขึ้นครั้งเดียว เราต้องหาองค์ประกอบนั้นจากอาร์เรย์นั้น
สมมติว่า A =[1, 1, 5, 3, 2, 5, 2] แล้วผลลัพธ์จะเป็น 3 เนื่องจากมีจำนวนแต่ละตัวอยู่สองครั้ง เราจึงสามารถใช้ XOR เพื่อยกเลิกองค์ประกอบนั้นได้ เพราะเรารู้ว่า y XOR y =0
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้
-
หาค่าตัวแปรหนึ่งค่า =0
-
สำหรับแต่ละองค์ประกอบ e ในอาร์เรย์ A preform res :=res XOR e
-
ผลตอบแทน
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
class Solution(object): def singleNumber(self, nums): ans = nums[0] for i in range(1,len(nums)): ans ^=nums[i] return ans ob1 = Solution() print(ob1.singleNumber([1,1,5,3,2,5,2]))
อินพุต
[1,1,5,3,2,5,2]
ผลลัพธ์
3