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

【Leetcode】231. 2的幂

给你一个整数n,请你判断该整数是否是2的幂次方。如果是,返回true;否则,返回false

如果存在一个整数x使得n == 2x,则认为n2的幂次方。

示例 1:

输入:n = 1
输出:true
解释:20 = 1

示例 2:

输入:n = 16
输出:true
解释:24 = 16

示例 3:

输入:n = 3
输出:false

提示:

-231 <= n <= 231 - 1

  • 进阶:你能够不使用循环/递归解决此问题吗?

AC:

classSolution{public:boolisPowerOfTwo(intn){if(n<=0)returnfalse;// 2 的幂的二进制表示中只有一个 1,// 所以 n & (n - 1) 应该等于 0return(n&(n-1))==0;}};
  • 这是道很典型2的幂判断题型
  • 至于为何能够判断?

解释如下:

2 的幂的二进制表示里,只有一个 1

1 -> 0001
2 -> 0010
4 -> 0100
8 -> 1000

发生了什么?

n - 1会把n最高位的那个1变成0
并把该位右边的所有低位0变成1

例如

n=8(1000)n -1=7(0111)n&(n -1)=1000&0111=0000

对于任意只有一个1的数,nn-1在那个位置上一定互斥,所以 按位与为0

为什么不是其它数?

如果n不是2的幂,例如n = 6:

6 = 0110
5 = 0101
6 & 5 = 0100,不是 0

6有两个1n-1只会清掉最右边的1,剩下的高位1仍然在结果中。
∴ 这个表达式的逻辑

n > 0
n 只有一个 1 位
n & (n - 1) 结果就是 0

因此(n & (n - 1)) == 0能返回true,表示n2的幂。


附上官方题解

http://www.jsqmd.com/news/913299/

相关文章:

  • Ubuntu屏幕分辨率显示Unknown display?别慌,用xrandr命令5分钟搞定
  • 深入Linux内核:拆解ARM64架构下spinlock.h中WFE()与dsb_sev()的默契配合
  • TranslucentTB:Windows任务栏透明化终极指南与完整解决方案
  • 零基础吃透「护网行动」!小白也能看懂的全网最细入门教程
  • 错误处理设计:Agent 调用工具失败怎么办
  • 接口“大一统”下的百亿赛道:笔记本电脑充电器市场深度分析
  • Harness Engineering:解决Agent不可靠问题的系统性方案
  • 西湖大学等机构联手破解AI图像生成的“翻译失真“难题
  • 保姆级教程:在Ubuntu 20.04上从源码编译运行FAST-LIO2(避坑指南)
  • BBA算法实战:为什么这个简单的ABR策略在真实流媒体中表现超乎想象?
  • 2026年市场诚信的加厚保密柜直销厂家怎么选择:数据驱动的专业指南 - 2026年企业资讯
  • 高精度地质系统仿真:基于TOUGH系列的CO2封存与地热开发案例精讲
  • 2026年成都店面设计装修品牌实测评测对比 - 优质品牌商家
  • 中小企业有必要上ERP吗?ERP核心价值、解决问题与落地方案
  • 用statsmodels做时间序列分解踩过的坑:period设错、趋势外推,我都帮你试过了
  • 脉冲神经网络在卫星定位中的能效优化与应用
  • 游戏资源宝库的钥匙:FModel让虚幻引擎游戏资源触手可及
  • 【Lindy自动化黄金配置清单】:12项必检参数+3类高危人工干预场景预警
  • 2026年Q2四川医院商用暖通工程厂家排行实测 - 优质品牌商家
  • 2026年当下吉林学摄影课程哪家?深度剖析沈阳爱玲化妆摄影培训学校 - 2026年企业资讯
  • β-PPH管与其他管道性能全对比
  • 卖钢结构厂房建设服务怎么找客户?有新建需求的工厂在哪里
  • 抖音批量下载神器:告别手动保存,高效管理你的数字内容库
  • 告别手动配环境:用PyAutoFEP+Gromacs搞定FEP自由能计算(附完整配置文件)
  • 概述(7)--虚拟机之酒店经营
  • CoreSight DAP中STICKYERR问题的分析与解决
  • 国内e型电子枪厂家性价比实测排行:新型e型电子枪/电子枪价格/电子枪改造/电子枪枪头/五家头部企业盘点 - 优质品牌商家
  • 2026成都长途搬家品牌选择:核心技术维度实测推荐 - 优质品牌商家
  • 内存计算技术:突破数据移动瓶颈的新范式
  • 别再手动调参了!用MATLAB的自动超参数优化,5分钟搞定LSBoost和Bagging回归模型