点击打开链接:百度面试题之找出数组中之出现一次的两个数(异或的巧妙应用)
题目描述|:给定一个包含n个整数的数组a,其中只有一个整数出现奇数次,其他整数都出现偶数次,请找出这个整数
使用异或操作,因为值相等的两个元素异或后结果为0,那么将数组的所有元素进行异或以后,结果就是出现奇数次的那个整数
#include<iostream> using namespace std; int Find_Number_appear_old_times(int a[], int n) { int ret= a[0] ; for(int i = 1; i < n; i++) ret^= a[i] ; return ret ; } int main() { //Test code int test[] = {2013,1991,1991,1991, 1992, 1993, 1994, 1994, 1993, 1992, 1993, 1993, 2013} ; cout<<"Number_appear_old_times: " <<Find_Number_appear_old_times(test, sizeof(test)/sizeof(test[0])) << endl ; } /*********************** 运行结果: Number_appear_old_times: 1991 ************************/