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 次瀏覽

開啟您的職業生涯

透過完成本課程獲得認證

開始操作
廣告
© . All rights reserved.