-
代码:
class Solution: def isPowerOfTwo(self, n: int) -> bool: return n > 0 and n & (n - 1) == 0
-
思路:巧妙利用位运算,
-
若 n = 2^x,且 x 为自然数(即 n 为 2 的幂),则一定满足以下条件:
- 恒有 n & (n - 1) == 0,这是因为:
- n 二进制最高位为 1,其余所有位为 0;
- n−1 二进制最高位为 0,其余所有位为 11;
- 一定满足 n > 0。
- 恒有 n & (n - 1) == 0,这是因为:
-
因此,通过 n > 0 且 n & (n - 1) == 0 即可判定是否满足 n = 2^xn=2
x
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pTQtkswD-1611736037729)(/home/lx/.config/Typora/typora-user-images/image-20210127155033487.png)]