题目的链接在这里:https://leetcode-cn.com/problems/power-of-four/
题目大意
给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false 。整数 n 是 4 的幂次方需满足:存在整数 x 使得 n == 4x
一、示意图
二、解题思路
//一个新的思路 就是 先考虑一个数字是不是2的(整数次方)
//如果他是的话 肯定是 这样的形式 00..1..00 而n-1一定是 00...01111
//所以这样 两个做& 运算一定是0 并且这些求4的次方 那就可以先给n开放,然后再判断是不是2的次方?
//先进行极值判断
位运算
代码如下:
class Solution {
public boolean isPowerOfFour(int n) {
//一个新的思路 就是 先考虑一个数字是不是2的(整数次方)
//如果他是的话 肯定是 这样的形式 00..1..00 而n-1一定是 00...01111
//所以这样 两个做& 运算一定是0 并且这些求4的次方 那就可以先给n开放,然后再判断是不是2的次方?
//先进行极值判断
if(n<1)
return false;
if(n==1)
return true;
int temp= (int) Math.sqrt(n);
//那就在这里再进行一次判断 可不可以开更好
if(temp*temp!=n) {
return false;
}
// System.out.println(temp);
boolean result=false;
if((temp&(temp-1))==0){
//说明temp是二的整数次方
result=true;
}
return result;
}
}
正常的思路
代码如下:
class Solution {
public boolean isPowerOfFour(int n) {
boolean result=false;
while (n>=4){
if(n%4==0) {
n /= 4;
}else{
//说明除不尽 直接breake
break;
}
}
if(n==1)
result=true;
return result;
}
}