1.暴力法
(4ms)
class Solution {
public:
bool isPowerOfTwo(int n) {
while(n>1){
if(n%2!=0) return false;
n=n/2;
}
if(n==1) return true;
return false;
}
};
2.位运算
(4ms)
class Solution {
public:
bool isPowerOfTwo(int n) {
return n > 0 && (n & (n - 1)) == 0;
}
};
3.判断二进制中是否只有一个1
(0ms)
class Solution {
public:
bool isPowerOfTwo(int n) {
while (n > 0) {
if (n & 1== 1)// 判断是否末位是1,1的对应存储的二进制码除了最低位,其他位都是0,
{
if (n == 1)
return true;
else
return false;
}
n = n >> 1;//右移一位相当于除以2
}
return false;
}
};