Write a function that takes an unsigned integer and returns the number of ’1' bits it has (also known as the Hamming weight).
For example, the 32-bit integer ’11' has binary representation 00000000000000000000000000001011
, so the function should return 3.
不敢相信我的眼睛了,居然这么简单的题目。
1 class Solution { 2 public: 3 int hammingWeight(uint32_t n) { 4 int cnt=0; 5 while(n) { 6 if(n%2) 7 cnt++; 8 n /= 2; 9 } 10 return cnt; 11 } 12 };
最近在书上看到一种复杂度更少的解法O(M),M为1的个数:
1 class Solution { 2 public: 3 int hammingWeight(uint32_t n) { 4 int cnt=0; 5 while(n) { 6 n &= (n-1); 7 ++cnt; 8 } 9 return cnt; 10 } 11 };