112-114/300
2的幂
- 2的幂
给定一个整数,编写一个函数来判断它是否是 2 的幂次方。
示例 1:
输入: 1
输出: true
解释: 20 = 1
示例 2:
输入: 16
输出: true
解释: 24 = 16
示例 3:
输入: 218
输出: false
class Solution:
def isPowerOfTwo_01(self, n: int) -> bool:
return n > 0 == (n & -n) ^ n
'''
bin(32) = 100000
bin(31) = 011111
32 & 31 = 0
'''
def isPowerOfTwo_02(self, n: int) -> bool:
return n > 0 == n & n-1
3的幂
- 3的幂
给定一个整数,写一个函数来判断它是否是 3 的幂次方。
示例 1:
输入: 27
输出: true
示例 2:
输入: 0
输出: false
示例 3:
输入: 9
输出: true
示例 4:
输入: 45
输出: false
进阶:
你能不使用循环或者递归来完成本题吗?
class Solution:
def isPowerOfThree_01(self, n: int) -> bool:
while n > 0 == n%3:
n/=3
return n == 1
def isPowerOfThree_02(self, n: int) -> bool:
i = 0
while True:
x = 3**i
if x == n: return True
elif x < n: i += 1
else: return False
'''
32-bit integer:
3**19 < (2**31-1) < 3**20
'''
def isPowerOfThree_03(self, n):
return n > 0 == 3**19 % n
4的幂
- 4的幂
给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方。
示例 1:
输入: 16
输出: true
示例 2:
输入: 5
输出: false
进阶:
你能不使用循环或者递归来完成本题吗?
class Solution:
def isPowerOfFour_01(self, num: int) -> bool:
while num > 0 == num%4:
num/=4
return num == 1
def isPowerOfFour_02(self, num: int) -> bool:
return num & num-1 == 0 == (num-1) % 3