Java判断一个数是否是2的幂次方leetcode

阅读 80

2022-04-13

给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。

如果存在一个整数 x 使得 n == 2x ,则认为 n 是 2 的幂次方。

class Solution {
    public boolean isPowerOfTwo(int n) {
    
        //return n>0 && (n & (n-1))==0;
        return n>0 && (n&(-n))==n;
    }
}

除了使用二进制表示判断之外,还有一种较为取巧的做法。

在题目给定的 32 位有符号整数的范围内,最大的2的幂为 2^{30} = 10737418242 
我们只需要判断n是否是10737418242 的约数。

class Solution {
    static final int BIG = 1 << 30;

    public boolean isPowerOfTwo(int n) {
        return n > 0 && BIG % n == 0;
    }
}

精彩评论(0)

0 0 举报