【leetcode】 Power of Two(Java)

Power of Two

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

好简单的一道题,估计更多的是考察效率吧,我使用了位运算,结果只beats 16.92% 。。。

解题思路:

思路大致就是看二进制中,是否是满足2的幂形式:为正且只有一个位为1。

public class Solution {
    public boolean isPowerOfTwo(int n) {
        if(n <= 0)
            return false;
        if(n==1)
            return true;
        int temp = 0;
        if((n & 1) == 1)
            return false;
        for(int i = 1; i < 32; i++){
            n = n >> 1;
            if((n & 1)==1)
                temp++;
            if(temp>1)
                return false;
        }
        return true;
    }
}

然后我进过思考,改进了一下:

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

然后还是beats 16.92%.。。。

大神们到底是怎么去写的。。。Orz

你可能感兴趣的:(java,LeetCode)