Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ค้นหาองค์ประกอบที่ปรากฏขึ้นครั้งเดียวในอาร์เรย์ที่องค์ประกอบอื่น ๆ ปรากฏขึ้นสองครั้งใน C++


สมมติว่าเรามีอาร์เรย์ 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