No231. 2的幂
题目
给定一个整数,编写一个函数来判断它是否是 2 的幂次方。
示例1
- 输入: 1
- 输出: true
- 解释: 20 = 1
示例2
- 输入: 16
- 输出: true
- 解释: 24 = 16
示例3
- 输入: 218
- 输出: false
思路
- 若小于等于0,返回False;
- 否则对n进行迭代,循环条件为n为偶数,循环体内部对n进行除2操作;
- 循环外需要判断一下n是否为1,若为1则表明符合条件,返回True;否则返回False。
解题代码(Python3)
class Solution:
def isPowerOfTwo(self, n: int) -> bool:
if n <= 0:
return False
while not n%2:
n = n/2
if n == 1:
return True
return False
复杂度分析:
- 时间复杂度O(logn) 每次除2
- 空间复杂度O(1)