解题方案:位操作的技巧

整数 n 和 n-1(n>0) 做与运算,从其二进制形式来看,可以消掉 n 的二进制数值中最后1个 “1” 。循环进行,每次消掉1个 “1” 。整数 n 的二进制数值中有多少个 “1” ,就需要进行多少次循环。

 

执行用时 :4 ms, 在所有 C++ 提交中击败了83.46%的用户
内存消耗 :8.2 MB, 在所有 C++ 提交中击败了23.43%的用户
class Solution {
public:
    int hammingWeight(uint32_t n) {
        int num = 0;
        
        while(n>0){
            n = n&(n-1);
            num++;
        }
        return num;
    }
};

 

执行用时 :4 ms, 在所有 C++ 提交中击败了83.46%的用户
内存消耗 :8.3 MB, 在所有 C++ 提交中击败了5.21%的用户
class Solution {
public:
    int hammingWeight(uint32_t n) {
        return (n > 0) ? 1 + hammingWeight(n & (n - 1)) : 0;
    }
};

 

相关文章:

  • 2021-09-10
  • 2022-02-26
  • 2021-11-14
  • 2022-12-23
  • 2021-12-03
  • 2022-12-23
  • 2021-08-27
猜你喜欢
  • 2021-12-27
  • 2022-12-23
  • 2022-12-23
  • 2021-08-17
  • 2021-05-19
  • 2021-09-16
  • 2022-12-23
相关资源
相似解决方案