📅  最后修改于: 2023-12-03 14:59:36.455000             🧑  作者: Mango
在一个给定的整数数组中,找出出现了奇数次的元素。
使用异或的性质,相同的数异或得0,不同的数异或得非0值,将整个数组异或起来,最终得到的就是只出现了奇数次的数的异或结果。
如数组中有 5 3 4 5 4,5和3异或结果为6,然后和4异或结果为2,再和5异或结果为7,最后和4异或结果为3,所以只出现了奇数次的数的异或结果就是3。
#include <stdio.h>
int findOddOccurrence(int arr[], int n) {
int i, res = 0;
for (i = 0; i < n; i++)
res ^= arr[i];
return res;
}
int main() {
int arr[] = {1, 2, 3, 2, 3, 1, 3};
int n = sizeof(arr)/sizeof(arr[0]);
printf("The element with odd occurrence is %d", findOddOccurrence(arr, n));
return 0;
}
#include <iostream>
using namespace std;
int findOddOccurrence(int arr[], int n) {
int i, res = 0;
for (i = 0; i < n; i++)
res ^= arr[i];
return res;
}
int main() {
int arr[] = {1, 2, 3, 2, 3, 1, 3};
int n = sizeof(arr)/sizeof(arr[0]);
cout << "The element with odd occurrence is " << findOddOccurrence(arr, n);
return 0;
}
本篇文章介绍了在C/C++语言中查找出现了奇数次的元素的方法。使用异或运算,能够高效地解决这个问题。