【Leetcode】位1的个数

解题方案:位操做的技巧css

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

 

执行用时 :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;
    }
};
相关文章
相关标签/搜索