class Solution {
public:
bool isPowerOfFour(int num) {
if(num <= 0) return false;
double num1 = sqrt(num);
if((num1 - (int)num1) > 1e-13) return false;
//判断num是不是2的幂
num = (int)num1;
return (num & (num - 1)) == 0;
}
};
/*
4 100 (1 在第 3 位)
16 10000(1 在第 5 位)
64 1000000(1 在第 7 位)
256 100000000(1 在第 9 位)
1024 10000000000(1 在第 11 位)
4 的幂次方的数的二进制表示 1 的位置都是在奇数位,且只有1个1
对于1010101010101010101010101010101(0x55555555)
如果用一个 4 的幂次方数和它做与运算,得到的还是 4 的幂次方数
*/
class Solution {
public:
bool isPowerOfFour(int num) {
if (num <= 0)
return false;
//先判断是否是 2 的幂
if ((num & num - 1) != 0)
return false;
//如果与运算之后是本身则是 4 的幂
if ((num & 0x55555555) == num)
return true;
return false;
}
};
LeetCode342. 4的幂
最新推荐文章于 2022-03-12 18:09:24 发布