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”

最新文章

  1. Caffe 单独测试添加的layer
  2. hash连接
  3. 在后台代码中动态生成pivot项并设置EventTrigger和Action的绑定
  4. python爬虫抓网页的总结
  5. WinForm 中两个窗口之间传递数据
  6. jQuery的deferred对象详解(一)
  7. 关于xcode6打包以及上线前企业部署测试的说明 --转自张诚教授微博
  8. Java ==,equals() 和hashCode
  9. 关于Opengl中将24位BMP图片加入�一个alpha通道并实现透明的问题
  10. 使用mysqldump 对数据库进行备份的乱码问题
  11. java 之 Spring
  12. 子进程 已安装 post-installation 脚本 返回错误状态 1,dpkg: 处理软件包 python-crypto (--configure)时出错: 该软件包正处于非常不稳定的状态;
  13. selenium采用find_element_by方法识别页面元素
  14. java编码与解码(一)
  15. Sklearn中二分类问题的交叉熵计算
  16. 进阶之路(基础篇) - 020 放弃Arduino IDE,拥抱Sublime Text 3
  17. win7创建 VirtualBox COM 对象失败。 应用程序现在将终止。 Callee RC: E_NOINTERFACE (0x80004002)
  18. 清空git默认的用户名和密码,
  19. rpm 卸载
  20. 你用 Python 做过什么有趣的数据挖掘项目?

热门文章

  1. 八、VTK安装并运行一个例子
  2. Java之System类
  3. C语言程序设计100例之(24):数制转换
  4. Python 从入门到进阶之路(二)
  5. 100本Python机器学习、深度学习电子书,免费送!
  6. ASP.NET MVC教程五:ASP.NET MVC中的路由
  7. [WPF 自定义控件]让Form在加载后自动获得焦点
  8. golang中,new和make的区别
  9. Android 中的style和Theme的使用
  10. 如何在mac版本的python里安装pip