题目链接:https://leetcode.com/problems/power-of-two/
方法:二进制
思路:一开始做就是不断除以2找奇数,这样做ac了,但是比较麻烦,网上看到一种二进制的做法非常好,简写的话只需要一行就够了。原理是凡是2的幂次数其二进制都有一个特点,那就是首位为1,其余都为0,利用这个特点,当这个数减去1再和这个数本身按位与的话必然是零,由此可解。
难点:无
c++:
class Solution {
public:
bool isPowerOfTwo(int n) {
if(n <= 0)
return 0;
if((n&(n-1))==0)
return 1;
else
return 0;
}
};
python
class Solution {
public:
bool isPowerOfTwo(int n) {
if(n <= 0)
return 0;
if((n&(n-1))==0)
return 1;
else
return 0;
}
};