PRELOADER

当前文章 : 《找出数组中唯一一个不重复的元素》

10/8/2019 —— 

找出数组中唯一一个不重复的元素

题目描述

给定一个数组,数组中仅有一个元素出现一次,其他的元素都出现两次,找到这个只出现一次的元素。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/**找出数组中唯一一个不重复元素*/ 
#include<iostream>
#include<vector>
using namespace std;
int NumberOf1(vector<int> arr) {
//异或运算,一个数与他本身异或等于0,一个数与0异或等于他本身,且异或满足交换律
int len = arr.size();
int res = -1;
if(len > 1) {
res = arr[0];
for (int i = 1; i < len; i++) {
res = res ^ arr[i];//异或处理,异或满足交换律
}
}
cout<<res<<endl;
return res;
}
int main(){
int N;
cin>>N;
vector<int> nums(N);
for(int i=0;i<N;i++)cin>>nums[i];
NumberOf1(nums);
return 0;
}

关系运算总结

二进制下:

1.与运算符 &

两个操作数中位都为1,结果才为1,否则结果为0

2.或运算符 |

两个位只要有一个为1,那么结果就是1,否则就为0

3.非运算符 ~

如果为0,结果是1,如果为为1,结果是0

4.异或运算符 ^

两个操作数的位中,相同则结果为0,不同则结果为1