[Leetcode] 231. 2的幂 java

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

示例 1:

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

示例 2:

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

示例 3:

输入: 218
输出: false
class Solution {
    public boolean isPowerOfTwo(int n) {
        if(n==1){
            return true;
        }
        if(n%2==0&&n>0){
            return isPowerOfTwo(n/2);
        }
        else{
            return false;
        }
    }
}

还可以通过二进制移位。2是10,4是100,8是1000...就是只有第一位是1,其余都是0

class Solution {
    public boolean isPowerOfTwo(int n) {
        if(n<=0)
             return false;
        return countBit(n)==1;   
    }
    public int countBit(int num){
        int count=0;
        while(num!=0){
            count+=(num & 1);
            num>>=1;//右移
        }    
    	return count;
        
    }
}

不过这两个方法速度慢。

猜你喜欢

转载自blog.csdn.net/niceHou666/article/details/82686383