🌕 326. 3 的幂
2022年10月10日
- algorithm
🌕 326. 3 的幂
难度: 🌕
问题描述
解法 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
解法 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
解法
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;
}
}
}