diff --git a/Algorithms/0191. Number of 1 Bits/191. Number of 1 Bits.go b/Algorithms/0191. Number of 1 Bits/191. Number of 1 Bits.go index 56afa32b..94f2697d 100644 --- a/Algorithms/0191. Number of 1 Bits/191. Number of 1 Bits.go +++ b/Algorithms/0191. Number of 1 Bits/191. Number of 1 Bits.go @@ -1,6 +1,14 @@ package leetcode +import "math/bits" + +// 解法一 func hammingWeight(num uint32) int { + return bits.OnesCount(uint(num)) +} + +// 解法二 +func hammingWeight1(num uint32) int { count := 0 for num != 0 { num = num & (num - 1) diff --git a/Algorithms/0191. Number of 1 Bits/README.md b/Algorithms/0191. Number of 1 Bits/README.md index c160d6e2..b7a435d3 100755 --- a/Algorithms/0191. Number of 1 Bits/README.md +++ b/Algorithms/0191. Number of 1 Bits/README.md @@ -36,4 +36,4 @@ Write a function that takes an unsigned integer and return the number of '1' b - 求 uint32 数的二进制位中 1 的个数。 - 这一题的解题思路就是利用二进制位操作。`X = X & ( X -1 )` 这个操作可以清除最低位的二进制位 1,利用这个操作,直至把数清零。操作了几次即为有几个二进制位 1 。 - +- 最简单的方法即是直接调用库函数 `bits.OnesCount(uint(num))` 。