给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true
;否则,返回 false
。整数 n
是 4 的幂次方需满足:存在整数 x
使得
输入:n = 16
输出:true
输入:n = 5
输出:false
输入:n = 1
输出:true
你能不使用循环或者递归来完成本题吗?
这道题其实跟 LeetCode 326.3的幂(简单)
一模一样,利用对数解决此题,假设 ,如果 n
是 4
的整数次方,那么 m
一定就是一个整数。所以,我们直接调用 Math.log10(n) / Math.log10(4)
并与 1
取余,如果余数为 0
则该数是 4
的幂次方。当然也可以用循环很快就能解出此题, n%4
只要余数为 0
,就一直将 n
除以 b
。因此,应该可以将 n
除以 b
x 次,每次都有 0
的余数,最终结果是 1
。最后加一个判断,检查 n == 1
,否则 while 循环将永远不会结束。
执行用时: 1 ms
内存消耗: 35.6 MB
class Solution {
public boolean isPowerOfFour(int n) {
// log10(n) 除于 Math.log10(4) 模 1 如果是 4 的幂则为 0
return Math.log10(n) / Math.log10(4) % 1 == 0;
}
}
题目来源:力扣(LeetCode)
联系客服