博客主​​页:🏆看看是李XX还是李歘歘 🏆

🌺每天分享一些包括但不限于计算机基础、算法等相关的知识点🌺

💗点关注不迷路,总有一些📖知识点📖是你想要的💗

⛽️今天的内容是Leetcode 342. 4的幂⛽️💻💻💻

​342. 4的幂​

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

整数 n 是 4 的幂次方需满足:存在整数 x 使得 n == 4x

示例 1:

输入:n = 16
输出:true

示例 2:

输入:n = 5
输出:false

示例 3:

输入:n = 1
输出:true
 

提示:

-231 <= n <= 231 - 1
 

进阶:你能不使用循环或者递归来完成本题吗?

迭代:数学模拟的方式,一直对n进行除3取余

func isPowerOfFour(n int) bool {
// 迭代
if n<1 {
return false
}
for n>1 {
if n%4!=0 {
return false
}
n/=4
}
return true
}

递归:思路同迭代

func isPowerOfFour(n int) bool {
//递归
if n<1 {
return false
}
if n==1 {
return true
}
if n%4!=0 {
return false
}
return isPowerOfFour(n/4)
}

位运算:4【100】;16【10000】;64【1000000】;256【100000000】。。。

可以发现,4的幂的数字,二进制表示有一个规律,都为1后面有偶数个0,则我们构建一个32位的偶数二进制位都是 00,所有奇数二进制位都是 1的数字2863311530【10101010101010101010101010101010】,和n进行与运算。

func isPowerOfFour(n int) bool {
return n > 0 && n&(n-1) == 0 && n&2863311530 == 0
}