231. Power of Two

Given an integer, write a function to determine if it is a power of two.

对于小于等于0的数,他们肯定不是2的幂指数倍。考虑大于等于零的数,当然可以循环暴力求解看是否能始终被二除,但是这里有一种更好的方法对于一个正数来说,如果一个数是2的幂,那么他肯定是1000000这种形式,对于这个数,减去1,可以得到011111111,可以看到这两个数每个位都是不一样的,只要检查两个数是否相与为零就好了。

class Solution {
    public boolean isPowerOfTwo(int n) {
        if(n<=0)
            return false;
        else
            return ((n-1)&n)==0;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容