题目
给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true
;否则,返回 false
。
整数 n
是 4 的幂次方需满足:存在整数 x
使得 n == 4x
示例 1:
输入:n = 16
输出:true
示例 2:
输入:n = 5
输出:false
示例 3:
输入:n = 1
输出:true
提示:
-231 <= n <= 231 - 1
解法
方法一: 循环。
class Solution {
// 循环
public boolean isPowerOfFour(int n) {
if(n <= 0){
return false;
}
while(n >= 4){
if(n%4 != 0){
return false;
}
n = n / 4;
}
return n == 1;
}
}
方法二: 递归。
class Solution {
// 递归
public boolean isPowerOfFour(int n) {
if(n <= 0){
return false;
}
if(n == 1){
return true;
}
if(n%4 != 0){
return false;
}
return isPowerOfFour(n/4);
}
}
方法三: 如果是4的幂次方,一定是2的幂次方,为了排除掉是2的幂次方而不是4的幂次方的数,可以用n%3==1。
class Solution {
// 方法三,如果是4的幂次方,一定是2的幂次方,而且n%3==1
public boolean isPowerOfFour(int n) {
return (n > 0) && ((n & (n-1)) == 0) && (n % 3) == 1;
}
}
总结
本篇文章讲解了算法题目的思路和解法,代码和笔记由于纯手打,难免会有纰漏,如果发现错误的地方,请第一时间告诉我,这将是我进步的一个很重要的环节。以后会定期更新算法题目以及各种开发知识点,如果您觉得写得不错,不妨点个关注,谢谢。