当前位置: 首页 > news >正文

191. 位1的个数

目录

一、问题描述

二、解题思路

三、代码

四、复杂度分析


一、问题描述

给定一个正整数 n,编写一个函数,获取一个正整数的二进制形式并返回其二进制表达式中 设置位 的个数(也被称为汉明重量)。

二、解题思路

强制将 n 当作无符号类型处理

  • 即使原始 n 是负数,转换为 unsigned int 后,仍然保留了其 32 位的补码表示

  • num & 1num >>= 1 会安全地进行 32 次迭代,不会陷入死循环。

  • 所以我们依然能正确统计 1 的个数!

三、代码

class Solution {
public:int hammingWeight(int n) {unsigned int num = static_cast<unsigned int>(n); // 转换为无符号整数int count = 0;while (num != 0) {count += (num & 1);  // 判断最低位是否为1num >>= 1;           // 无符号右移,不保留符号位}return count;}
};

四、复杂度分析

复杂度类型复杂度说明
时间复杂度O(1)固定32位整数,最多32次循环
空间复杂度O(1)只使用常数个变量

相关文章:

  • Python爬虫(七):PySpider 一个强大的 Python 爬虫框架
  • 通俗解释:编码器与解码器
  • Cursor Pro取消500次请求限制,无限用的体验更好了吗?
  • ntkrnlmp!_SHARED_CACHE_MAP结构中的成员DirtyPages=0x6(5)的一个例子和成员BcbList链表节点的数量一致
  • Git版本控制详细资料
  • MATLAB实现Gardner位同步算法
  • Docker 镜像与容器的区别
  • ROS学习之服务通信
  • Android11 Settings详解
  • 【统计术语】
  • Dart 类型系统与 GetX 类型写法完整指南
  • yarn create vite报错:文件名、目录名或卷标语法不正确。 error Command failed.
  • 【嵌入式】鲁班猫玩法大全
  • E结构体基础.go
  • 01.线性代数是如何将复杂的数据结构转化为可计算的数学问题,这个过程是如何进行的
  • FPGA基础 -- Verilog 结构建模之端口的不同位宽处理机制
  • flink如何基于Pekko实现RPC调用
  • openKylin适配RISC-V高性能服务器芯片,携手睿思芯科共拓智算新蓝海
  • ROS学习之动作通信
  • LangChain4j入门学习项目
  • 个人手机版网站建设/百度账号快速登录
  • 外贸网站的公司介绍/小红书seo软件
  • 建站公司售后服务/谷歌搜索引擎入口2022
  • 做网站需要哪些人员/杭州百度seo
  • 网站首页是什么意思/个人seo怎么赚钱
  • 个人专属logo设计/搜狗搜索引擎优化