位运算
若$n = 4^x$,则有$n=2^{2x}$
先去掉一个平方,则变成$n = 2^x$,转换成了2的幂题目,则继续通过lotbit判断n二进制位是否只有一个1
- 开平方
- 判断是否为2的幂
时间复杂度$O(1)$,空间复杂度$O(1)$
AC代码
class Solution {
public:
bool isPowerOfFour(int n) {
if (n <= 0) return false;//非正数
int t = (int) sqrt(n);
if (t * t != n) return false;
if (t - (t & (-t)) != 0) return false;
return true;
}
};