題目描述
請實現一個函數,輸入一個整數,輸出該數二進制表示中 1 的個數。例如,把 9 表示成二進制是 1001,有 2 位是 1。因此,如果輸入 9,則該函數輸出 2。
思路
代碼
class Solution:
def hammingWeight(self,n:int)->int:
res = 0
while n:
res += n & 1
n >>= 1
return res
複雜度
時間複雜度 O(log_2 n):此算法循環內部僅有 移位、與、加 等基本運算,佔用 O(1)O(1) ;逐位判斷需循環 log_2 n次,其中 log_2 n代表數字 n 最高位 1 的所在位數(例如 log_2 4 = 2, log_2 16 = 4)。
空間複雜度 O(1)O(1) :變量 resres 使用常數大小額外空間。