题目:只出现一次的数字
分析
异或^
运算的特点就是:与0异或等于本身
;本身异或等于0
;
而异或运算又满足交换律,因此可以得出,对数组中所有元素进行异或,凡是出现偶数对的元素均消失;结果便是剩下的出现奇数对的元素之间的异或结果。
而本题恰恰说明,只有一个元素是出现奇数次的,其他都是出现偶数次,因此异或的结果就是这个元素。
思路
题目中说了给的数组为非空,那么也就不需要进行特判了对吧,真好!
直接遍历,对所有元素进行累计异或
运算;
class Solution {
public int singleNumber(int[] nums) {
int singleNum = 0;
for(int num : nums){
singleNum ^= num;
}
return singleNum;
}
}