leetcode笔记之[4的幂 ]

139 阅读1分钟

Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情

一、题目描述:

342. 4的幂 - 力扣(LeetCode) (leetcode-cn.com)

给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false

整数 n4 的幂次方需满足:存在整数 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():

logab=logcb/logcalog_a^b = log_c^b / log_c^a

还有不少枚举的,因为这个数有限,所以最后答案的集合不会很大,算是一个取巧的办法吧。

范文参考

位运算快速判断4的幂,构造对数函数解题更加简单 - 4的幂 - 力扣(LeetCode) (leetcode-cn.com)

4的幂 - 4的幂 - 力扣(LeetCode) (leetcode-cn.com)