leetcode231.2的幂

166 阅读1分钟

231.2的幂

给定一个整数,编写一个函数来判断它是否是 2 的幂次方。

输入: 1  输出: true  解释: 2**0 = 1
输入: 218  输出: false
class Solution:
    def isPowerOfTwo(self, n: int) -> bool:
        return n > 0 and n & (n - 1) == 0
"""
若 n = 2^x且 x 为自然数(即 n 为 2 的幂),则一定满足以下条件:
1.  恒有 n & (n - 1) == 0,这是因为:
    n 二进制最高位为 1,其余各位为0;
    n - 1 二进制最高位为 0,其余各位为 1;
2.  恒有 n > 0。
因此,通过 n > 0 且 n & (n - 1) == 0 即可判定是否满足 n = 2^x
"""