这是力扣网站的一道题,挺巧妙的,分享给大家。
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
输入: [2,2,1]
输出: 1
输入: [4,1,2,1,2]
输出: 4
使用异或实现找数组里面只出现一次的数字。
int singleNumber(vector<int>& nums) {
int single = 0;
for (int num : nums) {
single ^= num;
}
return single;
}
a ^ c ^ b
<=>
a ^ b ^ c
0 ^ n => n
n ^ n => 0
[4,1,2,1,2]
异或分解:4 ^ 1 ^ 2 ^ 1 ^ 2
=>
4 ^ 1 ^ 1 ^ 2 ^ 2
=>
4 ^ 0 ^ 0
=>
4
题目出处:
https://leetcode-cn.com/problems/single-number/