题目描述:
给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true
;否则,返回 false
。整数 n
是 3 的幂次方需满足:存在整数 x
使得
示例 1:
示例 2:
示例 3:
示例 4:
提示:
进阶:
- 你能不使用循环或者递归来完成本题吗?
题目分析:
用循环很快就能解出此题, n%3
只要余数为 0
,就一直将 n
除以 b
。因此,应该可以将 n
除以 b
x 次,每次都有 0
的余数,最终结果是 1
。最后加一个判断,检查 n == 1
,否则 while 循环将永远不会结束。下面介绍一种不用循环解决的方法。利用对数解决此题,假设 ,如果 n
是 3
的整数次方,那么 m
一定就是一个整数。所以,我们直接调用 Math.log10(n) / Math.log10(3)
并与 1
取余,如果余数为 0
则该数是 3
的幂次方。
题解:
执行用时: 16 ms
内存消耗: 38.1 MB
题目来源:力扣(LeetCode)