力扣 342. 4的幂

题目说明

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

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

  • 提示:

    • -2^31 <= n <= 2^31 - 1

示例

示例 1:

1
2
输入:n = 16
输出:true

示例 2:

1
2
输入:n = 5
输出:false

示例 3:

1
2
输入:n = 1
输出:true

笔者理解

此题是一道位运算算法问题,在力扣题库中被定义为简单题。

解法

当笔者阅读完此题后,发现此题比较简单,考察的是简单的位运算知识,让我们来看看具体如何实现的吧。

实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public boolean isPowerOfFour(int n) {
// 0和负数非4的幂
if(n < 1) {
return false;
}

while(n > 1) {
// 除以4不等于0即不符合要求
if(n % 4 != 0) {
return false;
}
n >>= 2;
}

// 1 以及 进行多次除以4操作之后剩下1 也是4的幂
return n == 1;
}

时间效率和空间效率都还行,可见此解法还比较适合此题;

image.png

总结

本题是今天的每日一题,难度是为简单,感兴趣的朋友都可以去尝试一下,此题还有其他更多的解法,朋友们可以自己逐一尝试。