一、题目描述
给定一个整数,编写一个函数来判断它是否是 2 的幂次方。
示例 1:
输入: 1
输出: true
解释: 20 = 1
示例 2:
输入: 16
输出: true
解释: 24 = 16
示例 3:
输入: 218
输出: false
二、题解思路
- 暴力匹配,相等就说明有,大于就没有;
- 2的幂在二进制里只有一个位是为1的;
三、程序实例
class Solution {
public:
bool isPowerOfTwo1(int n) {
for(int i = 0;;++i)
{
long int tmp = pow(2, i);
if(tmp < n)
continue;
else if(tmp > n)
return false;
else
return true;
}
}
bool isPowerOfTwo(int n){
int count = 0;
while(n > 0)
{
if(n & 1 == 1)
{
if(count == 1)
return false;
count++;
}
n >>= 1;
}
return (count == 1);
}
};