劍指offer面試題15. 二進制中1的個數(位運算)

題目描述

請實現一個函數,輸入一個整數,輸出該數二進制表示中 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 使用常數大小額外空間。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章