From 871aa2a483949595ffb21b056dd44cd843a4a16d Mon Sep 17 00:00:00 2001 From: YDZ Date: Wed, 10 Jul 2019 02:58:33 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=20problem=20191?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../0191. Number of 1 Bits/191. Number of 1 Bits.go | 8 ++++++++ Algorithms/0191. Number of 1 Bits/README.md | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) 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))` 。