给定一个整数,写一个函数判断它是否是3的幂
Example 1:
Input: 27 Output: true
Example 2:
Input: 0 Output: false
Example 3:
Input: 9 Output: true
Example 4:
Input: 45 Output: false
进阶:
你能不适用循环或者迭代完成这个题么?
1:累除3
循环
def isPowerOfThree(self, n):
"""
:type n: int
:rtype: bool
"""
if n == 0:
return False
while n % 3 == 0:
n //= 3
return n == 1
递归
def isPowerOfThree(self, n):
"""
:type n: int
:rtype: bool
"""
if n == 0:
return False
if n == 1:
return True
if n % 3 == 0:
return self.isPowerOfThree(n // 3)
else:
return False
2:round()+math.log()方法(参考他人)
def isPowerOfThree(self, n):
"""
:type n: int
:rtype: bool
"""
if n <= 0:
return False
return 3 ** round(math.log(n, 3)) == n
类似方法(参考他人)
def isPowerOfThree(self, n):
"""
:type n: int
:rtype: bool
"""
if n <= 0:
return False
sum = 3 ** 100
return sum % n == 0
算法题来自:https://leetcode-cn.com/problems/power-of-three/description/