本文共 875 字,大约阅读时间需要 2 分钟。
给定一个整数,写一个函数来判断它是否是 3 的幂次方。
示例 1:
输入: 27输出: true
示例 2:
输入: 0输出: false
示例 3:
输入: 9输出: true
示例 4:
输入: 45输出: false
class Solution(object): def isPowerOfThree(self, n): """ :type n: int :rtype: bool """ if n <= 0: return False if n == 1: return True while n > 1: if(n % 3 != 0): return False n /= 3 return True
以下是Java版本:
【思路】
不用循环和递归,则:
3^x=n
log(3^x) = log(n)
x log(3) = log(n)
x = log(n) / log(3)
由于JAVA double浮点型的问题,需判断Math.abs(x - Math.round(x)) < 10e-15
1. public class Solution { 2. public boolean isPowerOfThree(int n) { 3. double temp = 10e-15; 4. if(n==0) return false; 5. 6. 7. double res = Math.log(n) / Math.log(3); 8. return Math.abs(res-Math.round(res)) < temp; 9. } 10. }
转载地址:http://zvuvi.baihongyu.com/