问题描述:
给定一个整数,写一个函数来判断它是否是 3 的幂次方。
示例 1:
输入: 27 输出: true
示例 2:
输入: 0 输出: false
示例 3:
输入: 9 输出: true
示例 4:
输入: 45 输出: false
方法:取243时,会出错。log(243,3) == 4.9999... 用round 四舍五入。(时间太长)
1 import math 2 class Solution: 3 4 def isPowerOfThree(self, n): 5 """ 6 :type n: int 7 :rtype: bool 8 """ 9 if n > 0: 10 return pow(3,round(math.log(n,3))) == n 11 else: 12 return False
官方:3^19=1162261467是小于2^31最大的3的倍数
1 class Solution: 2 def isPowerOfThree(self, n): 3 """ 4 :type n: int 5 :rtype: bool 6 """ 7 maxThreeInt = 3**19 8 9 return n > 0 and maxThreeInt % n == 0
循环:
1 import math 2 class Solution: 3 4 def isPowerOfThree(self, n): 5 """ 6 :type n: int 7 :rtype: bool 8 """ 9 if n > 0: 10 if n == 1: 11 return True 12 else: 13 k = 0 14 while k == 0 : 15 n = n / 3.0 16 k = n % 3 17 if n == 1: 18 return True 19 else: 20 return False 21 else: 22 return False
2018-09-25 21:03:03