Closed PisecesPeng closed 3 years ago
three
, 需要为3的倍数;three
超过入参大小之前, 保持倍数相乘. ps.设置为81的倍数是为了快速超过入参而折中的值
;three
再循环除以3, 使其等于/小于入参;three
相等;private static boolean func(int n) {
if (n <= 0) return false;
long three = 81l;
while (three < n) // 尽快超过入参
three *= 81l;
while (three > n)
three /= 3l;
if (three == n) return true;
else return false;
}
十进制
转换为三进制
;^1
开头,后跟0
或多个0*
并且不包含任何其他值$
;private static boolean func(int n) {
return Integer.toString(n, 3).matches("^10*$");
}
int
类型的大小是有上限的, 而3的幂最大值为1162261467
;3
是质数,3^19
的除数只有3^0, 3^1...3 ^19
;3^19
除以入参. 若余数为0
意味着入参是3^19
的除数;public static boolean func(int n) {
return n > 0 && 1162261467 % n == 0;
}
3的幂
给定一个整数, 写一个函数来判断它是否是'3'的幂次方.
如果是, 返回true; 否则, 返回false.
整数'n'是'3'的幂次方需满足: 存在整数'x'使得
n == 3x
提示:
进阶:
题目地址: https://leetcode-cn.com/problems/power-of-three/