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

องค์ประกอบเดียวในอาร์เรย์ที่เรียงลำดับใน C ++


สมมติว่าเรามีการจัดเรียงอาร์เรย์ที่ประกอบด้วยจำนวนเต็มเท่านั้น โดยที่ทุกองค์ประกอบปรากฏสองครั้งทุกประการ ยกเว้นองค์ประกอบหนึ่งที่ปรากฏเพียงครั้งเดียวทุกประการ เราต้องหาองค์ประกอบเดียวนี้ที่ปรากฏขึ้นเพียงครั้งเดียว ดังนั้นหากอาร์เรย์เป็นแบบ [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