Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
一、题目描述:
342. 4的幂 - 力扣(LeetCode) (leetcode-cn.com)
给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false 。
整数 n 是 4 的幂次方需满足:存在整数 x 使得 n == 4x
示例 1:
输入:n = 16
输出:true
示例 2:
输入:n = 5
输出:false
示例 3:
输入:n = 1
输出:true
提示:
- -2^31 <= n <= 2^31 - 1
进阶:你能不使用循环或者递归来完成本题吗?
二、思路分析:
首先如果一个数是4的幂,那他一定是2的幂,这个我们刚刚做过,所以我们可以在那个基础之上再去判断是不是4的幂就行了。
还有一个办法就是通用的,换底公式,那个适用于任何的几次幂。
三、AC 代码:
func isPowerOfFour(num int) bool {
return (num > 0)&&(num&(num-1) == 0) && (num%3==1)
}
四、总结:
摘抄下通用的对数函数
math库中提供了以 e 为底的log()和以10为底的log10(),可以通过换底公式构造log4():
。
还有不少枚举的,因为这个数有限,所以最后答案的集合不会很大,算是一个取巧的办法吧。
范文参考:
位运算快速判断4的幂,构造对数函数解题更加简单 - 4的幂 - 力扣(LeetCode) (leetcode-cn.com)