LeetCode—2的幂(暴力和位运算)

2的幂

2020年6月2日

题目来源:力扣

在这里插入图片描述

解题

  • 暴力
class Solution {
    public boolean isPowerOfTwo(int n) {
        if(n==0) return false;
        if(n==1) return true;
        while(n!=1){
            if(n%2!=0) return false;
            n/=2;
        }
        return true;
    }
}

在这里插入图片描述

  • 位运算

因为2的幂的二进制始终只有一位是1,例如0001、0010、0100、1000等。

这些2的幂减一的二进制值则除了这一位为0,这一位后面其他都为1,例如0000、0001、0011、0111等。

那么这两个数相与,结果肯定是0。

所以用此位运算规则来判断此数是否是2的幂。

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

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_41541562/article/details/106489619