【力扣】191.位 1 的个数

简介: 【力扣】191.位 1 的个数

191.位 1 的个数

题目描述

编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中 设置位 的个数(也被称为汉明重量)。

示例 1:

输入:n = 11

输出:3

解释:输入的二进制串 1011 中,共有 3 个设置位。

示例 2:

输入:n = 128

输出:1

解释:输入的二进制串 10000000 中,共有 1 个设置位。

示例 3:

输入:n = 2147483645

输出:30

解释:输入的二进制串 11111111111111111111111111111101 中,共有 30 个设置位。

提示:

  • 1 <= n <= 231 - 1

进阶:

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

解题方法

  • C 循环检查
int hammingWeight(int n) {
    int cnt = 0;
    unsigned int m = 0x1; // 必须定义为“无符号”型
    for (int i = 0; i < 32; i++) {
        if (n & (m << i)) {
            cnt++;
        }
    }
    return cnt;
}

复杂度分析

时间复杂度为 O(k),其中 k 是 int 型的二进制位数,k = 32。

空间复杂度为 O(1)。


相关文章
|
11月前
|
机器学习/深度学习 供应链 搜索推荐
深度学习与日常生活的融合
本文旨在探索深度学习技术在日常生活中的应用,分析其对各行各业的影响以及未来发展趋势。通过具体案例,展示深度学习如何改变我们的生活方式和工作模式,为读者提供全面而深入的理解。
|
数据安全/隐私保护
推荐一款中小企事业单位都能用的免费OA系统
在数字化办公时代,选择合适的免费OA办公系统对于提高工作效率和管理水平至关重要。在众多免费OA办公系统中,点晴免费OA办公系统深受中小企事业单位,其功能全面、易用性好,能够满足企业的日常办公需求。
355 6
|
缓存 边缘计算 负载均衡
如何理解CDN?说说实现原理?
CDN(内容分发网络)是提升网络访问速度的关键技术,通过在全球或全国范围内设立边缘服务器,将内容缓存到靠近用户的地方。当用户访问网站时,DNS返回CNAME,引导用户连接到最近的CDN节点,而非直接到源站。CDN的负载均衡系统依据用户位置、运营商、节点负载等因素选择最佳边缘节点提供服务,而缓存系统则存储常用资源以提高命中率,减少回源请求。高命中率使得CDN能显著提高网站性能,降低网络拥塞。
3020 0
|
存储 监控 安全
波场链(TRON)智能合约dapp开发部署指南
波场链(TRON)智能合约dapp开发部署指南
|
数据可视化 Linux Python
学生主机体验
各种学生机试用对比以及建议。
217 0
|
编解码 图形学 C++
voxel 与 pixel
中文名称:体素,即顾名思义是体积的像素。用来在三维空间中表示一个显示基本点的单位。类似于二维平面下的pixel(像素)。 voxel是三维空间中定义一个点的图象信息的单位。在平面中定义一个点要两个坐标X和Y就够了,而在三维世界中还要有一个坐标。
|
Ubuntu Linux
ubuntu wubi.exe 直接加载下载好的 amd64.tar.xz
玩了这么久的LINUX,一直都是直机装UBUNTU,虚一下XP的,后来不得不直机用WIN7,只能WUBI装一下UBUNTU了。不得不说,在WIN7下虚一个UBUNTU真是相当麻烦。
972 0