LeetCode | 2 的幂
2024-09-05 19:10:05
LeetCode 题库的第 231 题 —— 2 的幂
这题也是比较容易的一题,前提是找到规律即可。如果从 10 进制的角度观察 2 的幂次方,可能并不容易发现规律,那么可以从 2 进制的角度进行观察。
举例如下:
= ^ =
= ^ =
= ^ =
= ^ =
观察 2 进制可以看出,2 的 N 次方只有 1 个 1,其余都是 0,那么判断一个数是否为 2 的幂,可以通过位移来进行判断。代码如下:
bool isPowerOfTwo(int n) {
int num = n; if ( n <= ) return ; while ( num > ) {
if ( num & == ) {
return ;
}
num = num >> ;
} return ;
}
简单解释一下,如果一个数小于等于 0,那么它肯定不是 2 的幂,直接返回 0,num 必须要大于 1,否则直接返回 1,因为当 num 等于 1 时要么是循环结束,要么 num 本身就是 1,如果是 1 的话,就是 2 的 0 次幂。在循环中,不断的让 num 进行右移,并判断其最低位是否为 1 ,如果 num 大于 1,且 num 的最低位为 1,那么就不符合上面的规律了。就直接返回一个 0,如果循环中 num 的最低位都不为 1,那么最后就返回 1 即可。整个过程其实很简单,如果不太明白,那么最简单的方式就是将一个值转换为 2 进制,跟着调试一次即可。
我的微信公众号:“码农UP2U”
最新文章
- Caffe 单独测试添加的layer
- hash连接
- 在后台代码中动态生成pivot项并设置EventTrigger和Action的绑定
- python爬虫抓网页的总结
- WinForm 中两个窗口之间传递数据
- jQuery的deferred对象详解(一)
- 关于xcode6打包以及上线前企业部署测试的说明 --转自张诚教授微博
- Java ==,equals() 和hashCode
- 关于Opengl中将24位BMP图片加入�一个alpha通道并实现透明的问题
- 使用mysqldump 对数据库进行备份的乱码问题
- java 之 Spring
- 子进程 已安装 post-installation 脚本 返回错误状态 1,dpkg: 处理软件包 python-crypto (--configure)时出错: 该软件包正处于非常不稳定的状态;
- selenium采用find_element_by方法识别页面元素
- java编码与解码(一)
- Sklearn中二分类问题的交叉熵计算
- 进阶之路(基础篇) - 020 放弃Arduino IDE,拥抱Sublime Text 3
- win7创建 VirtualBox COM 对象失败。 应用程序现在将终止。 Callee RC: E_NOINTERFACE (0x80004002)
- 清空git默认的用户名和密码,
- rpm 卸载
- 你用 Python 做过什么有趣的数据挖掘项目?