🌕 326. 3 的幂

吞佛童子2022年10月10日
  • algorithm
  • Number
小于 1 分钟

🌕 326. 3 的幂

难度: 🌕

问题描述

img_32.png


解法 1 - 循环取余

class Solution {
    public boolean isPowerOfThree(int n) {
        // 思路:
        // method 1 - 对 n 循环除 3 判断是否有余数
        if(n <= 0) {
            return false;
        }
        while(n >= 3) {
            if(n % 3 == 0) {
                n /= 3;
            } else {
                return false;
            }
        }
        return n == 1;
    }
}

输出 1

img_31.png


解法 2 - 枚举

class Solution {
    public boolean isPowerOfThree(int n) {
        // 思路:
        // 计算 int 范围内所有 3 的幂,判断是否与 n 相同
        if(n <= 0) {
            return false;
        }
        if(n == 1) {
            return true;
        }
        int max = Integer.MAX_VALUE;
        int exp = 1;
        while(max / 3 >= exp) {
            exp *= 3;
            if(n == exp) {
                return true;
            }
        }
        return false;
    }
}

输出 2

img_33.png


解法

class Solution {
    public boolean isPowerOfThree(int n) {
        // 思路:
        // 3^0 3^1 3^2 ... 3^19 只有这些数为 int 范围内 3 的幂
        // 如果不循环操作,那么可以看到 3^19 除以 前面的 3 的幂 都会被整除
        if(n <= 0) {
            return false;
        }
        if((int)Math.pow(3, 19) % n == 0) {
            return true;
        } else {
            return false;
        }
    }
}

输出

img_34.png

上次编辑于: 2022/10/10 下午8:43:48
贡献者: liuxianzhishou