Leetcode NO.231 Power of Two
2015-07-10 07:12
447 查看
本题题目要求如下:
Given an integer, write a function to determine if it is a power of two.
很简单的要求,不过一开始我居然没有想到解决问题的办法,用一种很傻的方法做的,后来感觉不对,看了提示,用位运算解决,才恍然大悟,用简单方法解决了问题。。
power of 2的数看十进制,没有什么特别的地方,但是转换成二进制之后,都是100000的形式,最高位是1,其余位都是0,然后,这个数减1,就变为011111,最高位(已消失)为0,之后都是1,所以这两个数按位与(&)则变为0000000000.。。根据这个特性,可以解决这道题,代码如下:
更新一种更为传统的做法:
Given an integer, write a function to determine if it is a power of two.
很简单的要求,不过一开始我居然没有想到解决问题的办法,用一种很傻的方法做的,后来感觉不对,看了提示,用位运算解决,才恍然大悟,用简单方法解决了问题。。
power of 2的数看十进制,没有什么特别的地方,但是转换成二进制之后,都是100000的形式,最高位是1,其余位都是0,然后,这个数减1,就变为011111,最高位(已消失)为0,之后都是1,所以这两个数按位与(&)则变为0000000000.。。根据这个特性,可以解决这道题,代码如下:
class Solution { public: bool isPowerOfTwo(int n) { if (n <= 0) { return false; } return !(n & (n-1)); } };
更新一种更为传统的做法:
public: bool isPowerOfTwo(int n) { if (n <= 0) { return false; } while ((n >> 1) << 1 == n) { n >>= 1; } return (n == 1) ? true: false; } };
相关文章推荐
- 探索MySQL高可用架构之MHA(7)
- Google的算法出过哪些囧事?
- 给程序员第一天工作留下好印象的10个方式
- 关于心理学方面的一点看法
- python的绿色版本
- rebot的使用
- Robot Framework安装指南
- 修改状态栏字体的颜色
- 如何编写Robot Framework测试用例1---(基本格式篇)
- 在Oracle 11.2的数据库中建表时遇到 RESULT_CACHE (MODE DEFAULT) ORA-00922: missing or invalid option
- 自动化测试框架 RobotFramework 用户说明书中文版
- 自动化测试平台 Robot Framework 快速入门
- Robot FrameWork安装以及一个Demo
- mysql连接查询(A表某字段 like B表字段)
- Robot Framework自动化测试 ---文档分享
- Robot Framework自动化测试(五)--- 开发系统关键字
- Robot Framework自动化测试(四)--- 分层思想
- Robot Framework自动化测试(三)---Selenium API
- Robot Framework自动化测试(二)---元素定位
- Robot Framework自动化测试(一)---第一个脚本