数组中只出现一次的数(1)(C++)

来源:互联网 发布:pr淘宝视频 编辑:程序博客网 时间:2024/06/06 00:25

题目:

一个整型数组里除了1个数字之外,其他的数字都出现了两次。请写程序找出这个只出现一次的数字。


思路:

强调数字出现的次数,而且是偶数次。这时候可以考虑利用位运算的 "异或" 实现。

2个相同的数异或=0 

因此,将数组所有元素异或得到的结果即为只出现一次的那个数。


贴代码:

#include <iostream>#include <vector>using namespace std;// 找出数组中只出现一次的数void FindNumsAppearOnce(vector<int> data, int* num) {if (data.size() == 0){return;}*num = 0;for(unsigned int i = 0; i < data.size(); ++i){*num ^= data[i];}}int main(void){int a[] = {1,1,2,2,3};vector<int> v(a, a + 5);int num;FindNumsAppearOnceVer1(v, &num);cout<<"num = "<<num<<endl;return 0;}

0 0
原创粉丝点击