Leetcode Day5 4
2022-04-05 16:49 作者:我喜歡喝一點(diǎn)點(diǎn) | 我要投稿
劍指 Offer 15. 二進(jìn)制中1的個(gè)數(shù)
編寫(xiě)一個(gè)函數(shù),輸入是一個(gè)無(wú)符號(hào)整數(shù)(以二進(jìn)制串的形式),返回其二進(jìn)制表達(dá)式中數(shù)字位數(shù)為 '1' 的個(gè)數(shù)(也被稱(chēng)為?漢明重量).)。
?嗚嗚嗚,歪了刻晴,我不想活了,我的綾人啊。
發(fā)病結(jié)束
我第一個(gè)用的方法就是lowbit(現(xiàn)學(xué)現(xiàn)用了)
class?Solution:
????def?hammingWeight(self,?n:?int)?->?int:
????????def?lowbit(n:int)->int:
????????????return?n&(-n)
????????res=0
????????while?n:
????????????tmp=lowbit(n)
????????????n-=tmp
????????????res+=1
????????return?res

但是py里面這么搞似乎太慢了,看看大佬們的題解吧……
大佬用的n&(n?1)

也就是說(shuō)去掉了最右側(cè)的一個(gè)1,和n-n&(-n)是一個(gè)意思吧
class Solution:
? ?def hammingWeight(self, n: int) -> int:
? ? ? ?res=0
? ? ? ?while n:
? ? ? ? ? ?res+=1
? ? ? ? ? ?n=n&(n-1)
? ? ? ?return res

這樣的話(huà)似乎快一點(diǎn)

標(biāo)簽: