LeetCode 191 Number of 1 Bits
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 191 Number of 1 Bits
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
LeetCode 191 Number of 1 Bits?
解法一(較為傳統都解法):使用將n不斷右移,并與1想&得到1的個數;(也有使用除法/2的,明顯除法的運行效率要低于位移)
時間復雜度:0(logn)
1 int hammingWeight(uint32_t n){ 2 int count=0; 3 4 while (n!=0) { 5 if (n & 1) { 6 ++count; 7 } 8 n = n>>1; 9 } 10 11 return count; 12 }
?
解法二:
使用n&(n-1)的方法
假使 n =0x110101
??????????????? n??????????????????? n-1?????????????? n&(n-1)
step1:?? 110101???????? ?110100????????? 110100
step2:?? 110100??????????110011????????? 110000
step3:???110000????????? 101111????????? 100000
step4:???100000????????? 011111????????? 000000
發現有幾個1,就循環幾次n&(n-1)得到0,明顯較于上者運行效率更高些。
時間復雜度:O(M),M是n中1的個數。
代碼如下:
1 int hammingWeight(uint32_t n){ 2 int count=0; 3 4 while (n!=0) { 5 count++; 6 n = n&(n-1); 7 } 8 9 return count; 10 }
?
轉載于:https://www.cnblogs.com/wudongyang/p/4337295.html
總結
以上是生活随笔為你收集整理的LeetCode 191 Number of 1 Bits的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最近流行啥电影啊
- 下一篇: hdu 2087 剪花布条