一.解法
https://leetcode-cn.com/problems/power-of-two/
要点:位运算
一开始用C++,想法是不断除以二直到1,同时每次取2的余数,如果途中余数出现了1说明不是。
后来参考题解位运算,明白了2的幂的充要条件是n>0 && n&(n-1)==0,java和Python用了位运算方法。
二.Python实现
class Solution:
def isPowerOfTwo(self, n: int) -> bool:
return (n>0) and (n&(n-1))==0
三.C++实现
class Solution {
public:
bool isPowerOfTwo(int n) {
int last;
if(n<=0) return false;
while(n!=1){
last=n%2;
if(last==1) return false;
n=n/2;
}
return true;
}
};
四.java实现
class Solution {
public boolean isPowerOfTwo(int n) {
if ((n>0) && (n&(n-1))==0) return true;
return false;
}
}