题解 | #二进制中1的个数#

二进制中1的个数

https://www.nowcoder.com/practice/8ee967e43c2c4ec193b040ea7fbb10b8

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param n int整型 
     * @return int整型
     */
    int NumberOf1(int n) {
        // write code here
        // 位运算
        // int count = 0;
        // auto un = static_cast<unsigned int>(n);
        // while (un != 0) {
        //     count += un & 1; // 检查最低位是不是 1
        //     un >>= 1; // 对无符号整数进行右移,保证是逻辑右移
        // }
        // return count;

        // Brian Kernighan 算法
        // int count = 0;
        // while (n != 0) {
        //     n &= (n - 1); // 清楚最低位的 1
        //     count++;
        // }
        // return count;

        // 内置函数法
        return __builtin_popcount(n);
    }
};

全部评论

相关推荐

嵌入式的小白:有道理哈,这种就看能不能捞
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务