1. 題目
請實現一個函數,輸入一個整數,輸出該數二進制表示中1的個數。其中負數用補碼錶示。例如,9表示成二進制是1001, 有2位1。因此,如果輸入9,則該函數輸出2。
2. 解題思路
因爲涉及到了二進制,所以使用位運算
詳細思路移步 leetcode 面試題15. 二進制中 1 的個數(位運算,清晰圖解)
3. 代碼實現
3.1
class Solution:
def hammingWeight(self, n):
"""
"""
count = 0
while n:
count += 1
n = (n-1) & n
return count
4. 總結
num & 1的結果是,奇數爲1偶數爲0。
5. 參考文獻
[1] 劍指offer叢書