详细介绍:(LeetCode 每日一题) 342. 4的幂 (数学、二进制)
题目:342. 4的幂

思路:数学+二进制,时间复杂度0(1)。
4的幂,等价于2^(2*i),这里的i为非负整数。如果为4的幂,那么二进制形式时,只有一个1,且与01010101010101010101010101010101进行“与&”运算,结果不为0。
而01010101010101010101010101010101在16进制对应的是0x55555555。
C++版本:
class Solution
{
public:
bool isPowerOfFour(int n) {
return n>
0 &&
(n&
(n-1))==0 &&
(n&
(0x55555555)) >
0;
}
};
JAVA版本:
class Solution
{
public boolean isPowerOfFour(int n) {
return n>
0 &&
(n&
(n-1))==0 &&
(n&
(0x55555555)) >
0;
}
}
GO版本:
func isPowerOfFour(n int) bool {
return n>
0 &&
(n&
(n-1))==0 &&
(n&
(0x55555555)) >
0
}

浙公网安备 33010602011771号