สมมติว่าเรามีอาร์เรย์ 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): """ :type nums: List[int] :rtype: int """ 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]))
อินพุต
nums = [1,1,5,3,2,5,2]
ผลลัพธ์
3