leetcode 342. Power of Four 4的幂指数
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.
Follow up: Could you solve it without loops/recursion?
最直接的方法就是使用log函数去做判断,后来网上发现一个使用位计算的方法,直接看代码吧!
建议和这一道题leetcode 326. Power of Three 3的幂指数 一起学习。
代码如下:
public class Solution
{
public boolean isPowerOfFourByLog(int num)
{
double res=Math.log10(num) / Math.log10(4);
return (res-(int)(res))==0?true:false;
}
public boolean isPowerOfFour(int num)
{
if(num<=0)
return false;
return (num&(num-1))==0 && (num&0x55555555)==num;
}
}
下面是C++的做法
代码如下:
#include <iostream>
#include <vector>
#include <map>
#include <unordered_map>
#include <set>
#include <unordered_set>
#include <queue>
#include <stack>
#include <string>
#include <climits>
#include <algorithm>
#include <sstream>
#include <functional>
#include <bitset>
#include <numeric>
#include <cmath>
#include <regex>
using namespace std;
class Solution
{
public:
bool isPowerOfFour(int num)
{
double res = log10((double)num) / log10(4);
return (res - (int)res) == 0 ? true : false;
}
};
还没有评论,来说两句吧...