題目說明:給你一個數字,要你判斷這個數字是否為2的冪次方
Case 1
Input: n = 1
Output: true
Explanation: 2^0 = 1
Case 2
Input: n = 16
Output: true
Explanation: 2^4 = 16
Case 3
Input: n = 3
Output: false
解題思路:要如何判斷是否為2的冪次方。我們可以知道若一個數字(假設為n)為2的冪次方,這個數字可以被改寫成
n=12222*...*2(中間有x個2),所以回推的話就可以知道在可以被2整除的條件下將n持續除以2最後得到結果必定為1,有了這個思維其實程式方面就很好寫了。
附上程式碼以及註解
Java
class Solution {
    public boolean isPowerOfTwo(int n) {
       if(n<=0){
           return false;//n<0絕對不是2的冪次方
       }
        while(n%2==0){
            n=n/2;//可以被2整除的條件下將n持續除以2
        }
        if(n==1){
            return true;//n=1回傳true
        }
        return false;
}
}
Python
class Solution:
    def isPowerOfTwo(self, n: int) -> bool:
        if n<=0:
            return False#n<0絕對不是2的冪次方
        while n%2==0:
            n//=2#可以被2整除的條件下將n持續除以2
        return n==1#判斷n是否=1