判定是否2的幂

判定是否2的幂

231.2的幂

给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。

如果存在一个整数 x 使得 n == 2x ,则认为 n 是 2 的幂次方。

垃圾解法

2的幂,转换成2进制就是1000000...这样子,只有1个1,且不为负
所以:
class Solution:
    def isPowerOfTwo(self, n: int) -> bool:
        if n<0:
            return False
        s = bin(n)[2:]
        if s.count('1') == 1:
            return True
        return False

官方解法

复杂度分析

时间复杂度:O(1)。

空间复杂度:O(1)。

class Solution:
    def isPowerOfTwo(self, n: int) -> bool:
        return n > 0 and (n & (n - 1)) == 0

class Solution:
    def isPowerOfTwo(self, n: int) -> bool:
        return n > 0 and (n & -n) == n

多谢支持~

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,多谢支持~

打开微信扫一扫,即可进行扫码打赏哦