C ++中排序数组中的单个元素

假设我们有一个仅由整数组成的排序数组,其中每个元素恰好出现两次,除了一个元素恰好出现一次。我们必须找到仅出现一次的单个元素。因此,如果数组类似于[1、2、3、3、4、4、8、8],则输出为2

为了解决这个问题,我们将遵循以下步骤-

  • 回答:= 0

  • 适用于0到nums数组大小的范围

    • ans:= ans XOR nums [i]

    • 返回ans

例子(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