uacs2024

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

leetcode 191. 位1的个数

191. 位1的个数

给定一个正整数 n,编写一个函数,获取一个正整数的二进制形式并返回其二进制表达式中设置位的个数。1 <= n <= 2^32-1

法一:暴力解:

复制代码
class Solution {
public:
    int hammingWeight(uint32_t n) {
        int count=0;
        while(n){
            if(n%2==1)  count++;
            n /= 2;
        }
        return count;
    }
};
复制代码

法二:逐位判断

对于二进制数字n

若 n & 1 = 1 ,那么 n 二进制最右位为 1

若 n & 1 = 0 ,那么 n 二进制最右位为 0

复制代码
class Solution {
public:
    int hammingWeight(int n) {
        int res = 0; // c++ 使用无符号数
        while (n != 0) {
            res += (n & 1);//若 n & 1 = 1 ,那么 n 二进制最右位为 1; 若 n & 1 = 0 ,那么 n 二进制最右位为 0
            n = n >> 1;//n的二进制右移一位
        }
        return res;
    }
};
复制代码

法三:利用  n & (n-1)

复制代码
class Solution {
public:
    int hammingWeight(int n) {
        int res = 0;
        while (n != 0) {
            n &= n - 1;
            res++;
        }
        return res;
    }
};
复制代码

 

posted on   ᶜʸᵃⁿ  阅读(7)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示