1.解题思路
第一种最棒的方法,是运用位运算。我自己使用的是n右移一位后与n-1做与运算,不变得返回true;
官方的两种是n与n-1做与运算,结果为0的返回true;n与补码做与运算,结果与n相同的返回true。
class Solution:
def isPowerOfTwo(self, n: int) -> bool:
return n > 0 and (n&(n-1))==0
2.解题思路
第二种使用循环。
class Solution:
def isPowerOfTwo(self, n: int) -> bool:
if n < 1:
return False
elif n == 1:
return True
else:
while n%2 == 0:
n = n / 2
if n == 1:
return True
else:
return False
3.解题思路
第三种使用递归。
class Solution:
def isPowerOfTwo(self, n: int) -> bool:
if n < 1:
return False
elif n == 1:
return True
elif n == 2:
return True
else:
if n%2 == 1:
return False
else:
return isPowerOfTwo(n/2)
链接:https://leetcode-cn.com/problems/power-of-two/solution/231-2de-mi-by-senlindu-xyce/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。