สมมติว่าเรามีการจัดเรียงอาร์เรย์ที่ประกอบด้วยจำนวนเต็มเท่านั้น โดยที่ทุกองค์ประกอบปรากฏสองครั้งทุกประการ ยกเว้นองค์ประกอบหนึ่งที่ปรากฏเพียงครั้งเดียวทุกประการ เราต้องหาองค์ประกอบเดียวนี้ที่ปรากฏขึ้นเพียงครั้งเดียว ดังนั้นหากอาร์เรย์เป็นแบบ [1, 1, 2, 3, 3, 4, 4, 8, 8] ผลลัพธ์จะเป็น 2
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- แทน :=0
- สำหรับฉันในช่วง 0 ถึง nums ขนาดอาร์เรย์
- ans :=ans XOR nums[i]
- คืนสินค้า
ตัวอย่าง(C++)
ให้เราดูการใช้งานต่อไปนี้เพื่อทำความเข้าใจ −
#include <bits/stdc++.h> using namespace std; class Solution { public: int singleNonDuplicate(vector<int>& nums) { int ans = 0; for(int i = 0;i < nums.size(); i++)ans ^= nums[i]; return ans; } }; main(){ Solution ob; vector<int> v = {1,1,2,3,3,4,4,8,8}; cout << (ob.singleNonDuplicate(v)); }
อินพุต
[1,1,2,3,3,4,4,8,8]
ผลลัพธ์
2