LeetCodeAnimation/notes/LeetCode第326号问题:3的幂.md
程序员吴师兄 5dee53d957 更换图片地址
2019-11-14 11:00:28 +08:00

58 lines
1.3 KiB
Java
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# LeetCode 326 号问题3 的幂
> 本文首发于公众号五分钟学算法[图解 LeetCode ](<https://github.com/MisterBooo/LeetCodeAnimation>)系列文章之一。
>
> 个人网站[https://www.cxyxiaowu.com](https://www.cxyxiaowu.com)
题目来源于 LeetCode 上第 326 号问题3 的幂题目难度为 Easy目前通过率为 43.5%
### 题目描述
给定一个整数写一个函数来判断它是否是 3 的幂次方
**示例 1:**
```
输入: 27
输出: true
```
**示例 2:**
```
输入: 0
输出: false
```
**进阶**
你能不使用循环或者递归来完成本题吗
### 题目解析
正常的思路是不停地去除以 3看最后的迭代商是否为 1这种思路的代码使用到了循环逼格不够高
这里取巧的方法 **用到了数论的知识3 的幂次的质因子只有 3**
题目要求输入的是 int 类型正数范围是 0 - 2<sup>31</sup>在此范围中允许的最大的 3 的次方数为 3<sup>19 </sup>= 1162261467 那么只要看这个数能否被 n 整除即可
### 动画描述
待补充
### 代码实现
```java
class Solution {
public boolean isPowerOfThree(int n) {
return n > 0 && 1162261467 % n == 0;
}
}
```
![](https://blog-1257126549.cos.ap-guangzhou.myqcloud.com/blog/fzqbe.png)