力扣191. 位1的个数

给定一个正整数 n,编写一个函数,获取一个正整数的二进制形式并返回其二进制表达式中

设置位 的个数(也被称为汉明重量)。


示例 1:

复制代码
输入:n = 11
输出:3
解释:输入的二进制串 1011 中,共有 3 个设置位。

示例 2:

复制代码
输入:n = 128
输出:1
解释:输入的二进制串 10000000 中,共有 1 个设置位。

示例 3:

复制代码
输入:n = 2147483645
输出:30
解释:输入的二进制串 1111111111111111111111111111101 中,共有 30 个设置位。

提示:

  • 1 <= n <= 231 - 1

进阶

  • 如果多次调用这个函数,你将如何优化你的算法?

代码:

cpp 复制代码
class Solution {
public:
    int hammingWeight(int n) {
        int cnt;

        while(n){
            cnt += n%2;
            n = n/2;
        }

        return cnt;
    }
};

解题思路:

(1)根据题意,只需计算输入 n 的二进制表示中,有几个1。

(2)只要进行模2运算,即可判断余数是否为1。

(3)每次循环 n 除以 2。

相关推荐
WolfGang0073217 分钟前
代码随想录算法训练营 Day21 | 回溯算法 part03
数据结构·算法
tankeven7 分钟前
HJ152 取数游戏
c++·算法
程序员Shawn9 分钟前
【机器学习 | 第六篇】- 机器学习
人工智能·算法·机器学习·集成学习
深邃-9 分钟前
数据结构-队列
c语言·数据结构·c++·算法·html5
Rhystt15 分钟前
代码随想录算法训练营第六十天|多余的边?从基础到进阶!
开发语言·c++·算法·图论
2301_8101609536 分钟前
C++中的策略模式进阶
开发语言·c++·算法
keep intensify36 分钟前
二叉树的直径
数据结构·算法·深度优先
keep intensify44 分钟前
单源最短路径
数据结构·c++·算法
2401_8735449244 分钟前
分布式缓存一致性
开发语言·c++·算法
香芋超新星1 小时前
反转字符串中的小写字母
算法