Go语言实现:【剑指offer】数组中只出现一次的数字
该题目来源于牛客网《剑指offer》专题。
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
正常能想到哈希表来处理,但此题考查的是异或的知识,不同则为1,相同则为0,可以发现,0^任何数就等于数本身。
简单来说从0开始时,异或一个数相当于加上这个数,再异或这个数时,相当于减掉这个数,最后剩下的就是唯一存在的数了。
Go语言实现:
func singleNumber(nums []int) int {
result := 0
for _, x := range nums {
result ^= x
}
return result
}