php判断给定的整数是否是2的幂_[LeetCode] 231. 2的幂
题目链接: https://leetcode-cn.com/problems/power-of-two
难度:简单
通过率:46.6%
题目描述:
给定一个整数,编写一个函数来判断它是否是 2 的幂次方。
示例:
示例 1:
输入: 1
输出: true
解释: 20 = 1
示例 2:
输入: 16
输出: true
解释: 24 = 16
示例 3:
输入: 218
输出: false
思路:
思路一:一直除2,看到最后能不能被除尽
时间复杂度:
- 递归
class Solution:
def isPowerOfTwo(self, n: int) -> bool:
if n <= 0:
return False
if n == 1:
return True
if n % 2 == 0:
return self.isPowerOfTwo(n // 2)
return False
- 迭代
class Solution:
def isPowerOfTwo(self, n: int) -> bool:
if n == 0: return False
while n % 2 == 0:
n //= 2
return n == 1
思路二:位
因为是2的幂,二进制都是10000..
这样形式的,那么就有
时间复杂度:
- 位计数
class Solution:
def isPowerOfTwo(self, n: int) -> bool:
return n > 0 and bin(n).count("1") == 1
- 位操作
class Solution:
def isPowerOfTwo(self, n: int) -> bool:
return n > 0 and n & (n - 1) == 0
更多题解:
九四干:[LeetCode] 题目汇总(持续更新)zhuanlan.zhihu.com