使用 C++ 查詢一個數組中異或為 0 的對數。


假設我們有一個包含 n 個元素的陣列;我們必須在陣列中找到幾對元素,其異或值將為 0。異或為 0 的對 (x, y),則 x = y。要解決此問題,我們可以對陣列排序,然後如果兩個連續元素相同,則增加計數。如果所有元素都相同,則可能不會計算最後一個計數。在這種情況下,我們將檢查最後一個元素和第一個元素是否相同,如果相同,則將計數增加 1。

示例

#include<iostream>
#include<algorithm>
using namespace std;
int countPairs(int arr[], int n) {
   int count = 0;
   sort(arr, arr+n);
   for(int i = 0; i<n - 1; i++){
      if(arr[i] == arr[i+1]){
         count++;
      }
   }
   if(arr[0] == arr[n-1])
      count++;
   return count;
}
int main() {
   int arr[] = {1, 2, 1, 2, 4};
   int n = sizeof(arr)/sizeof(arr[0]);
   cout << "Number of pairs: " << countPairs(arr, n);
}

輸出

Number of pairs: 2

更新於:30-10-2019

126 次檢視

開啟你的 職業生涯

完成課程,獲得證書

開始
廣告
© . All rights reserved.