Leetcode Note: Go - Number of 1 Bits
Number of 1 Bits - LeetCode
https://leetcode.com/problems/number-of-1-bits/
- Go 言語で取り組んだメモ
所感
- 各数値を走査して 1 かチェックすれば良さそう
回答
Python/JS/Go/C++ O( lg n ) by bit-manipulation - LeetCode Discuss
https://leetcode.com/problems/number-of-1-bits/discuss/468836/PythonJSGoC%2B%2B-O(-lg-n-)-by-bit-manipulation
func hammingWeight(num uint32) int {
output := 0
for i := 0; i < 32; i++ {
if num&uint32(1) == 1 {
output++
}
num >>= 1
}
return output
}
- uint32 データの各桁を確認するのどうするんだ・・・?と思ってググったら bit 全探索というのがあるらしい
num&uint32(1) == 1
&
がビット演算子で論理積を判定し、真なら 1 を返す
num >>= 1
>>
が左シフトなので…num >>= 1
は num を 1 bit 左シフトするということ- これをループしているので bit 全探索が実現できているということ
num[i]
みたいなアクセスじゃないので、慣れてないと処理内容が想像しにくい