美文网首页
LeetCode 342-Power of Four

LeetCode 342-Power of Four

作者: 胡哈哈哈 | 来源:发表于2016-06-04 00:49 被阅读42次

分析

一共有2种比较巧妙的方法,前提是首先确定是2的幂次。

  • 4的幂次减1可以被3整除。
  • 检查数字的偶数位是否有1。
class Solution {
public:
    bool isPowerOfFour(int num) {
        return num > 0 && (num & (num - 1)) == 0 && (num - 1) % 3 == 0;
    }
};

0xaaaaaaaa表示二进制数1010 1010 1010 1010 1010 1010 1010 1010,采用&运算可以探测到偶数位是否存在1。

class Solution {
public:
    bool isPowerOfFour(int num) {
        return num > 0 && (num & (num - 1)) == 0 && (num & 0xaaaaaaaa) == 0;
    }
};

相关文章

网友评论

      本文标题:LeetCode 342-Power of Four

      本文链接:https://www.haomeiwen.com/subject/omjldttx.html