leetcode 342. Power of Four 4的幂指数

野性酷女 2022-06-07 01:15 309阅读 0赞

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的幂指数 一起学习。

代码如下:

  1. public class Solution
  2. {
  3. public boolean isPowerOfFourByLog(int num)
  4. {
  5. double res=Math.log10(num) / Math.log10(4);
  6. return (res-(int)(res))==0?true:false;
  7. }
  8. public boolean isPowerOfFour(int num)
  9. {
  10. if(num<=0)
  11. return false;
  12. return (num&(num-1))==0 && (num&0x55555555)==num;
  13. }
  14. }

下面是C++的做法

代码如下:

  1. #include <iostream>
  2. #include <vector>
  3. #include <map>
  4. #include <unordered_map>
  5. #include <set>
  6. #include <unordered_set>
  7. #include <queue>
  8. #include <stack>
  9. #include <string>
  10. #include <climits>
  11. #include <algorithm>
  12. #include <sstream>
  13. #include <functional>
  14. #include <bitset>
  15. #include <numeric>
  16. #include <cmath>
  17. #include <regex>
  18. using namespace std;
  19. class Solution
  20. {
  21. public:
  22. bool isPowerOfFour(int num)
  23. {
  24. double res = log10((double)num) / log10(4);
  25. return (res - (int)res) == 0 ? true : false;
  26. }
  27. };

发表评论

表情:
评论列表 (有 0 条评论,309人围观)

还没有评论,来说两句吧...

相关阅读

    相关 342. 4

    342. 4的幂 给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 `true` ;否则,返回 `false` 。 整数 `n` 是 4 的幂次方需满