題目說明:給你一個數字,要你判斷這個數字是否為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