概述
这是力扣网站的一道题,挺巧妙的,分享给大家。
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
输入: [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异或得任何数,如:
0 ^ n => n
相同的数异或为0,如:
n ^ n => 0
最后数组[4,1,2,1,2]异或分解:
4 ^ 1 ^ 2 ^ 1 ^ 2
=>
4 ^ 1 ^ 1 ^ 2 ^ 2
=>
4 ^ 0 ^ 0
=>
4
当然异或还可以应用于两个数字的交换,比如
a = 100;
b = 101;
t = a ^ b = 100 ^ 101 = 001;
a = a ^ t = 100 ^ 001 = 101;
b = b ^ t = 101 ^ 001 = 100;
关于更多题目出处:
https://leetcode-cn.com/problems/single-number/
最后
以上就是犹豫康乃馨为你收集整理的用异或找出数组只出现一次的数字关于异或的全部内容,希望文章能够帮你解决用异或找出数组只出现一次的数字关于异或所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复