1. 程式人生 > >[Leetcode] 231. 2的冪 java

[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;
        
    }
}

不過這兩個方法速度慢。