《LeetCode之每日一题》:44.位1的个数

Posted 是七喜呀!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《LeetCode之每日一题》:44.位1的个数相关的知识,希望对你有一定的参考价值。

位1的个数


题目链接: 位1的个数

有关题目

题解

法一:内置位计数函数

class Solution {
public:
    int hammingWeight(uint32_t n) {
       return __builtin_popcount(n);
    }
};

在这里插入图片描述
在这里插入图片描述
法二:循环检查二进制位

class Solution {
public:
    int hammingWeight(uint32_t n) {
        int count = 0;
        int i = 0;
        while(i < 32)
        {
            if ((n >> i) & 1)//n & (1 << i)
                count++;
                i++;
        }
        return count;
    }
};

在这里插入图片描述

在这里插入图片描述
法三:位运算优化

class Solution {
public:
    int hammingWeight(uint32_t n) {
        int count = 0;
        while(n)
        {
            count++;
            n &= n - 1;
        }
        return count;
    }
};

在这里插入图片描述

在这里插入图片描述

以上是关于《LeetCode之每日一题》:44.位1的个数的主要内容,如果未能解决你的问题,请参考以下文章

《LeetCode之每日一题》:239.最大连续 1 的个数

《LeetCode之每日一题》:154.最长递增子序列的个数

《LeetCode之每日一题》:82.最大连续1的个数 III

《LeetCode之每日一题》:114.有效三角形的个数

《LeetCode之每日一题》:223.第 N 位数字

《LeetCode之每日一题》:42.汉明距离