231. 2 的幂

考点

  • n & (n - 1)技巧

题解

1
2
3
4
5
6
class Solution {
public:
bool isPowerOfTwo(int n) {
return n > 0 && (n & (n - 1)) == 0;
}
};

时间复杂度:\(O\left( 1 \right)\)

空间复杂度:\(O\left( 1 \right)\)

思路

若满足2的幂次,二进制位有且只有一个1

所以使用n & (n - 1)技巧去掉最后一个1,判断是否为空即可