[leetcode]: 342. Power of Four
2017-05-23 15:51
363 查看
1.题目
Given an integer (signed 32 bits), write a function to check whether it is a power of 4.Example:
Given num = 16, return true. Given num = 5, return false.
给一个整数n,判断是否为4的幂
2.分析
之前已经做过了判断3的幂次方,2的幂次方。求int32范围内最大的2的幂次方,3的幂次方,通过整除来判断的方法只适用于2和3这样的质数。
由于2的特殊性,所以可以通过bit位为1来判断。
4也很特殊。
1)4=2*2。所以对n开方,然后判断是否为2的幂次方也是可行的。
2)从bit位来看4的幂次方如1=0001,4=0100,16=0001,0000,64=0100,0000.
可以看到bit为1的位总是在每4位的0或3号位上。所以可以先判断n是否为2的幂,再判断是够满足为4的幂。
3.代码
public: //开方 bool isPowerOfFour_1(int num) { if (num <= 0) return false; if (num == 1) return true; auto x = sqrt(num); if (fmod(x, 1) == 0 && !(int(x)&(int(x) - 1))) return true; return false; } //log bool isPowerOfFour_2(int num) { return fmod(log10(num)/log10(4),1)==0; } //bit判断 bool isPowerOfFour_3(int n) { return n > 0 && (n&(n - 1)) == 0 && (n & 0x55555555); } };
相关文章推荐
- LeetCode-342. Power of Four
- [LeetCode] 342. Power of Four(位操作)
- leetcode 231. Power of Two & 326. Power of Three & 342. Power of Four
- LeetCode342. Power of Four 简单解法
- LeetCode 342. Power of Four
- LCP342 LeetCode 342. Power of Four
- Leetcode 231. Power of Two & 326. Power of Three & 342. Power of Four
- LeetCode 342. Power of Four
- LeetCode 342. Power of Four
- leetcode 342. Power of Four 4的幂指数
- LeetCode笔记:342. Power of Four
- LeetCode 342. Power of Four
- leetCode 342. Power of Four 位运算
- 【LeetCode】 342. Power of Four
- leetcode 342. Power of Four
- <LeetCode OJ> 342. Power of Four
- [LeetCode] 342. Power of Four 4的次方数
- leetcode 342. Power of Four 判断一个数是否为4的幂
- LeetCode 342. Power of Four
- leetcode 342. Power of Four