题目解析:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
题解:采用异或运算
特性:
- 一个数和零0⃣️做异或运算,运算结果为本身
- 一个数和本身做异或运算,运算结果为零0⃣️
- 异或运算可以做交换律和结合律 如:
a⊕b⊕a=b⊕a⊕a=b⊕(a⊕a)=b⊕0=b
代码如下:
function sigleNum(arr){
let ans = 0
for(let i in arr){
ans ^=i
}
return ans
}
//方案2:
function one(nums){
for(let i=0;i<nums.length;i++){
if(nums.lastIndexOf(nums[i]) ===nums.indexOf(nums[i])){
return nums[i]
}
}
}