第一题 位1的距离
题目
解题思路
对于二进制数的操作
位运算无疑是最高效的
最直接的思路是
直接用与运算读取1的个数
循环32次后返回计数器的值
代码
func hammingWeight(num uint32) int {
var count int
k := 32
for i := 0; i < k; i++ {
a := num & 1
count += int(a)
num = num >> 1
}
return count
}
复杂度分析及优化
第二题 汉明距离
题目
解题思路
可以发现
在将x与y进行异或之后
我们把一个复杂的问题转换成为了已解决的问题
代码
func hammingDistance(x int, y int) int {
return hammingWeight(uint32(x)^uint32(y))
}
func hammingWeight(num uint32) int {
var count int
k := 32
for i := 0; i < k; i++ {
a := num & 1
count += int(a)
num = num >> 1
}
return count
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。