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;
    }
}

 

posted @ 2022-03-20 10:17  随遇而安==  阅读(24)  评论(0编辑  收藏  举报