迭代法
class Solution(object):
def isPowerOfTwo(self, n):
"""
:type n: int
:rtype: bool
"""
# # Solution 1: 迭代法
if n <= 0:
return False
else:
while n!= 1:
if n%2 != 0:
return False
n = n//2
return True
二进制
class Solution(object):
def isPowerOfTwo(self, n):
"""
:type n: int
:rtype: bool
"""
# Solution 2:
if n <= 0:
# 非正数不是2的幂
return False
else:
a = bin(n).replace('0b', '') # 转换成二进制
b = [int(i) for i in a] # 二进制列表
if sum(b) == 1: # 列表求和结果等于1,则是2的幂
return True
else:
return False
位运算
class Solution(object):
def isPowerOfTwo(self, n):
"""
:type n: int
:rtype: bool
"""
return n>0 and n&(n-1)==0
参考题解:https://leetcode.cn/problems/power-of-two/solutions/12689/power-of-two-er-jin-zhi-ji-jian-by-jyd/