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


假设我们有一个仅由整数组成的已排序数组,其中每个元素都精确出现两次,但有一个元素仅出现一次。我们必须找到仅出现一次的单个元素。因此,如果数组形如 [1, 1, 2, 3, 3, 4, 4, 8, 8],则输出将为 2

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

  • ans := 0
  • for i 在 0 到 nums 数组大小范围内
    • ans := ans XOR nums[i]
    • return 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

更新时间:2020 年 4 月 29 日

286 次浏览

开启您的职业生涯

通过完成本课程获得认证

开始操作
广告