74. 3 的幂
给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true ;否则,返回 false 。
整数 n 是 3 的幂次方需满足:存在整数 x 使得 n == 3x
/*
解题思路
1,暴力做法是循环,每次乘以3 直到大于n,这样做法会超时。。
2,为了加快循环速度,可以用对当前数乘方,min为上一个数,max为下一个数(乘方),判断n是否落在min和max之间
3,由于有乘方,所以需要long值计算
*/
class Solution {
public boolean isPowerOfThree(int n) {
if(n<0) return false;
//if(n==1||n==3) return true;
long k = 3l;
long min = 1l, max = 1l;
n = Math.abs(n);
while(k<n){
min = k;
k = k*k;
}
max = k;
//System.out.println(k);
for(long i=min;i<=max;i*=3){
if(i==n) return true;
}
return false;
}
}