[LeetCode]231. Power of Two
题目描述
思路
对1移位,与给出数字的最高位对齐,然后异或,结果为0则返回true,否则false
update
简单方法 一行代码
n若是2的幂,则n&(n-1) = 0
代码
class Solution {
public:
bool isPowerOfTwo(int n) {
int mask = 1;
int condition = n;
if (!condition) {
return false;
}
condition >>= 1;
if (!condition) {
return true;
}
while (condition >= 1) {
condition >>= 1;
mask <<= 1;
}
condition = n ^ mask;
if (condition) {
return false;
}
else {
return true;
}
}
};
update
class Solution {
public:
bool isPowerOfTwo(int n) {
return (n > 0) & (!(n & (n - 1)));
}
};