天天看點

2021-5-30 力扣每日一題231 2的幂

231 2的幂

斷更,斷更,斷更。我有罪,但是我不改hhh

問題描述:

​ 給你一個整數 n,請你判斷該整數是否是 2 的幂次方。如果是,傳回 true ;否則,傳回 false 。如果存在一個整數 x 使得 n == 2x ,則認為 n 是 2 的幂次方。

示例1:

輸入:n = 1
輸出:true
           

示例2:

輸入:n = 16
輸出:true
           

示例3:

輸入:n = 3
輸出:false
           

示例4:

輸入:n = 4
輸出:true
           

示例5:

輸入:n = 5
輸出:false
           

思路:

​ 我們就按照數學的方式進行計算即可。算它的以2為底的log值,如果是整數,那就是2的倍數,如果不是的話,就不是2的倍數。在Java中,我們使用一個換底公式就可以計算以2為底的對數值,後續判斷兩個值的差是不是很小即可。如果很小,那麼就判定為true,如果不是的話,就為false。

Java代碼:

/**
* @Description: 力扣231題題解
* @return: 傳回結果
* @Author: Mr.Gao
* @Date: 2021/5/30
*/
public boolean isPowerOfTwo(int n) {
    double log = Math.log(n)/Math.log(2);
    if(log-(int)log<0.00000000000001){
        return n>0&&true;
    }
    return false;
}