题目
有一个数组,其中只有一个元素出现了1次,其他的元素出现了两次,现在要求把这个出现了一次的元素揪出来;要求时间复杂度为O(n),空间复杂度为O(1);
解法
使用异或运算;
异或运算的规则:任何数字和0进行疑惑运算得到的结果是这个数字本身,任何数字和自身进行异或运算,得到的是0
运用这个规则…只要是出现了偶数次的数字,他们的异或运算结果一定是0;对于出现了奇数次的数字,他们的异或运算结果一定是本身;
异或运算本身满足结合律和交换律
所以只需要挨个进行异或运算,就能找出出现过奇数次数的数字;
感想
真的牛逼…这个算法真的牛逼
