leetcode 342. Power of Four
题意:给你一个32位的数,判断能不能是4的次方。
一看难度是easy!直接暴力!
后来看到提示:没有循环或者递归!
思路:
1.4的次方肯定不可能是负数或者0. num>=0
2.4的次方肯定是2的次方。 num&(num-1)!=0
这里就只剩下二进制为1000...这钟形式的数。
3.4的次方,他的二进制奇数为肯定有1,偶数位全为0. num&(0x55555555)!=0
类似 1000 0100
& 1010 & 1010
= 1000 = 0000
class Solution {
public:
bool isPowerOfFour(int num) {
if (num <= 0) return false;
if(num & (num - 1)) return false;
if(num & 0x55555555) return true;
return false;
}
};
数论没有简单,只有会和不会!