问题 只出现一次的数字 :
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
说明:
你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?
分析:
我一开始想的就是再额外开辟一个数组,循环题目中的原数组,将题目中给定的数组元素作为新数组的索引,并在循环的时候做自增操作:
即
但是我没有考虑到负数的情况,如果原数组中存在负数,则会出现下标越界的现象;
还是在大佬题解中的异或运算解决了我的问题(先说明我是个菜鸟,哈哈哈)
异或运算:
-------二进制数:相同为0,不同为1
-------十进制数:a^a=0,a^0=a。
某个元素出现一次,其余元素出现2次,
结合异或的知识:
------a^a=0;
------a^0=a;
当元素出现偶数次时,其异或结果必为0;
0再与出现一次的元素异或时,结果就是该元素本身。
因此较为准确的代码是:
异或运算不常用,所以我没有想到,继续加油!!!!