这题的实现思路还是比较多的,用额外的存储空间来计数,或者用集合来实现等都可以,但是题目给出了限制,不能用额外的存储空间,以及在线性的时间内解决。
这里就要用到位运算异或来解决。
异或操作:利用异或运算的性质:
x ^ x = 0(任何数和自身异或为0)x ^ 0 = x(任何数和0异或为自身)- 异或是可交换和可结合的。
因此,异或所有元素,最终会得到只出现一次的元素,因为成对的数字会相互抵消。
var singleNumber = function (nums) {
let res = 0
for (let num of nums) {
res ^= num
}
return res
};