【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;
    }
};
相關文章
相關標籤/搜索