题目来源
Given an integer, write a function to determine if it is a power of two.
给一个整数,判断它是不是2的次方数。一道简单题,正常的做法如下:
class Solution {
public:
bool isPowerOfTwo(int n) {
if (n < 1)
return false;
while (n) {
if (n == 1)
return true;
if (n % 2 == 1)
return false;
n = n / 2;
}
return true;
}
};
能够AC,但是大神们总是有amazing idea,想想假如n是2的次方数,那么n&(n-1)
等于什么,0!!!好吧,代码如下:
class Solution {
public:
bool isPowerOfTwo(int n) {
return n > 0 && !(n & (n-1));
}
};