给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
通过这个算法题,感觉要熟练使用异或运算,在很多场景下是最能直接解决问题的
//第一错觉想法,忽略每一个数的前一个符号并不是符合自己预期的那样+-,所以结果很可能不符合预期
func singleNumber(nums []int) int {
sum := 0
for i:=0;i<len(nums);i++{
if i % 2 == 0{
sum += nums[i]
}else{
sum -= nums[i]
}
}
if sum >0{
return sum
}
return -sum
}
func singleNumber(nums []int) (res int) {
for i:=0;i<len(nums);i++{
res ^= nums[i]
}
return res
}