给你一个整数 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