概述
题目:有一堆数字,如果除了一个数字以外,其他数字都出现了两次,那么如何找到出现一次的数字?
思路:本题其实考察的是异或的知识点,异或运算如下:
任何数和 00 做异或运算,结果仍然是原来的数,即 a ^ 0=aa⊕0=a
任何数和其自身做异或运算,结果是 00,即 a ^ a=0a⊕a=0
异或运算满足交换律和结合律,即:
a ^ b ^ a=b ^ a ^ a=b ^ (a ^ a)=b ^ 0=ba⊕b⊕a=b⊕a⊕a=b⊕(a⊕a)=b⊕0=b。
既然有一个数字只出现了一次,那么这个数组肯定是奇数个数字,如果是偶数个数字的话,那么就不会有只出现一次的数字了
代码一如下:
package main
import "fmt"
func main() {
Num := [11]int{1, 3, 5, 7, 9, 11, 3, 1, 9, 5, 11}
fmt.Println(Num[0] ^ Num[1] ^ Num[2] ^ Num[3] ^ Num[4] ^ Num[5] ^ Num[6] ^ Num[7] ^ Num[8] ^ Num[9] ^ Num[10])
}
上面的代码其实比较繁琐,万一有101个数字那怎么办呢?我们可以写一个循环来实现输出:
代码如下:
package main
import "fmt"
func main() {
Num := [11]int{1, 3, 5, 7, 9, 11, 3, 1, 9, 5, 11}
res := 0
for _, v := range Num {
res ^= v
}
fmt.Println(res)
}
最后
以上就是复杂夕阳为你收集整理的go语言之“找到一串数字中只出现一次的数字”的全部内容,希望文章能够帮你解决go语言之“找到一串数字中只出现一次的数字”所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复