0
点赞
收藏
分享

微信扫一扫

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

fbd4ffd0717b 2022-04-13 阅读 80
java算法

给你一个整数 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 条评论