使用 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.