Go语言实现:【剑指offer】数组中只出现一次的数字

该题目来源于牛客网《剑指offer》专题。

一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。

正常能想到哈希表来处理,但此题考查的是异或的知识,不同则为1,相同则为0,可以发现,0^任何数就等于数本身。

简单来说从0开始时,异或一个数相当于加上这个数,再异或这个数时,相当于减掉这个数,最后剩下的就是唯一存在的数了。

Go语言实现:

func singleNumber(nums []int) int {
    result := 0
    for _, x := range nums {
        result ^= x 
    }
    return result
}
posted @ 2019-12-07 21:17  南方有嘉木1993  阅读(141)  评论(0编辑  收藏  举报