[LeetCode练习]231. 2的幂

给定一个整数,编写一个函数来判断它是否是 2 的幂次方。

示例 1:

输入: 1
输出: true
解释: 20 = 1

示例 2:

输入: 16
输出: true
解释: 24 = 16

示例 3:

输入: 218
输出: false

方法一

思路:循环除以2 当不大于1的时候判断,=1 true 否则 false

代码:

public boolean isPowerOfTwo(int n) {
        double m = (double)n;
        while (m>1) {
           m = m/2;
        }
        if (m==1) {
            return true;
        }
        return false;
    }

方法二

思路:如果一个数是2的幂,那么它的二进制表示中就只有一位1,例如:10000,1000,100等等。所以如果对数字1进行移位操作,总会在移到某个位的时候和这个数相等。这就是移位判断的思想。 

代码:

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

猜你喜欢

转载自blog.csdn.net/lbh199466/article/details/86571876