LeetCode-231 power-of-two 2的幂

版权声明:转载请注明原址,有错误欢迎指出 https://blog.csdn.net/iwts_24/article/details/83374522

题目链接

https://leetcode-cn.com/problems/power-of-two/

题意

中文题,题面意思,给一个整数判定是否为2的幂。

题解

        有趣的一个题,就是太水了。直接暴力也能做其实,不过时间没试。大概就是for循环持续计算2的幂,也可以打表储存值。然后for循环表来比较整数,如果恰好相等就返回true,如果碰见整数小于表值的情况那就是false。

        不过刚看这个题感觉应该考虑二进制的写法,毕竟2的幂猜也能猜绝壁要用位运算。2的幂的二进制一定是1后面跟一堆0的情况,这个在最早学权值的时候就理解了。那么n-1的二进制就是0后面一堆1的情况。那么n & n-1,如果满足2的幂的话值就是0了。这样就简单地解决了问题。

        不过很疑惑= =Java跑出来时间是4ms,显示还有55%+的Java代码更快,我是除了预先求终值打表直接输出答案的情况想不出来更快的了= =莫非暴力更快?求大佬解答。

Java 代码

class Solution {
    public boolean isPowerOfTwo(int n) {
        if(n < 1) return false;
        if((n & (n-1)) == 0){
            return true;
        }
        return false;
    }
}

猜你喜欢

转载自blog.csdn.net/iwts_24/article/details/83374522
今日推荐