## 数学

一个不能再朴素的做法是将 $n$ 对 $3$ 进行试除，直到 $n$ 不再与 $3$ 呈倍数关系，最后判断 $n$ 是否为 $3^0 = 1$ 即可。

代码：

* Java

```Java
class Solution {
    public boolean isPowerOfThree(int n) {
        if (n <= 0) return false;
        while (n % 3 == 0) n /= 3;
        return n == 1;
    }
}
```

* 时间复杂度：$O(\log_{3}n)$
* 空间复杂度：$O(1)$

---

## 倍数 & 约数

题目要求不能使用循环或递归来做，而传参 $n$ 的数据类型为 `int`，这引导我们首先分析出 `int` 范围内的最大 $3$ 次幂是多少，约为 $3^{19} = 1162261467$。

如果 $n$ 为 $3$ 的幂的话，那么必然满足 $n * 3^k = 1162261467$，即 $n$ 与 $1162261467$ 存在倍数关系。

因此，我们只需要判断 $n$ 是否为 $1162261467$ 的约数即可。

代码：

* []

```Java
class Solution {
    public boolean isPowerOfThree(int n) {
        return n > 0 && 1162261467 % n == 0;
    }
}
```

* 时间复杂度：$O(1)$
* 空间复杂度：$O(1)$

---

## 打表

另外一个更容易想到的「不使用循环/递归」的做法是进行打表预处理。

使用 `static` 代码块，预处理出不超过 `int` 数据范围的所有 $3$ 的幂，这样我们在跑测试样例时，就不需要使用「循环/递归」来实现逻辑，可直接 $O(1)$ 查表返回。

代码：

* []

```Java
class Solution {
    static Set<Integer> set = new HashSet<>();
    static {
        int cur = 1;
        set.add(cur);
        while (cur <= Integer.MAX_VALUE / 3) {
            cur *= 3;
            set.add(cur);
        }
    }
    public boolean isPowerOfThree(int n) {
        return n > 0 && set.contains(n);
    }
}
```

* 时间复杂度：将打表逻辑交给 $OJ$ 执行的话，复杂度为 $O(\log_3{C})$，$C$ 固定为 $2147483647$；将打表逻辑放到本地执行，复杂度为 $O(1)$
* 空间复杂度：$O(n)$

---

## 其他「$x$ 的幂」问题

可以尝试加练如下的「$x$ 的幂」问题 🍭🍭🍭

| 题目                                                         | 题解                                                         | 难度 | 推荐指数 |
| ------------------------------------------------------------ | ------------------------------------------------------------ | ---- | -------- |
| [231. 2 的幂](https://leetcode-cn.com/problems/power-of-two/)  | [LeetCode 题解链接](https://leetcode-cn.com/problems/power-of-two/solution/gong-shui-san-xie-2-de-mi-by-ac_oier-qm6e/) | 简单 | 🤩🤩🤩🤩    |
| [342. 4的幂](https://leetcode-cn.com/problems/power-of-four/)                                                             |                                                  [LeetCode 题解链接](https://leetcode-cn.com/problems/power-of-four/solution/gong-shui-san-xie-zhuan-hua-wei-2-de-mi-y21lq/)            |  简单 | 🤩🤩🤩🤩  |

