สมมติว่าเรามีอาร์เรย์ A ในอาร์เรย์นี้มีตัวเลขหลายตัวที่เกิดขึ้นสองครั้ง มีเพียงองค์ประกอบเดียวที่พบได้เพียงครั้งเดียว เราต้องหาองค์ประกอบนั้นจากอาร์เรย์นั้น สมมติ A = [1, 1, 5, 3, 2, 5, 2] ผลลัพธ์จะเป็น 3 เนื่องจากมีตัวเลขแต่ละตัวสองครั้ง เราสามารถทำ XOR เพื่อตัดทอนองค์ประกอบนั้นออกได้ เพราะเรารู้ว่า y XOR y = 0
วิธีการแก้ปัญหา
- ตั้งตัวแปร res = 0
- สำหรับแต่ละองค์ประกอบ e ในอาร์เรย์ A ทำ res = res XOR e
- คืนค่า res
ตัวอย่าง
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