[Go的算法实现]二进制中1的个数
Publish date: Jul 17, 2019
Last updated: Jun 14, 2020
Last updated: Jun 14, 2020
剑指Offer中问题10的go实现。
问题
输入一个整数,输出该数二进制表示中1的个数。
思路
解决该问题需要使用到位运算。
- 首先将数字减去1
- 之后将该数字与减去1的数字进行位运算,结果覆盖该数字,并向计数器加1
- 重复步骤2,直到该数字为0停止
注意点
- 输入负数
- 输入0
- 输入MaxInt64和MinInt64
代码实现
package q010
func Answer(checkedNum int) (numOfOne int) {
if checkedNum < 0 {
checkedNum = 0 - checkedNum
}
for checkedNum != 0 {
checkedNum = checkedNum & (checkedNum - 1)
numOfOne++
}
return
}