LeetCode 342-Power of Four

分析

一共有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题目 题目: Given an integer (signed 32 bits), write a...
    _Xie_阅读 186评论 0 1
  • 问题描述 Given an integer (signed 32 bits), write a function ...
    如烟花非花阅读 356评论 0 0
  • 原题 给出一个整数 (32 位), 写出一个函数判断它是不是4的次方数 样例:给出 num = 16, 返回 tr...
    Jason_Yuan阅读 308评论 0 0
  • 1 关键字 1.1 关键字的概述 Java的关键字对java的编译器有特殊的意义,他们用来表示一种数据类型,或...
    哈哈哎呦喂阅读 672评论 0 0
  • 如此空虚 为什么要活着?我活着的价值是什么? 我的家人,朋友——正能量的影响 我的理想,目标——人生长远的价值是?
    明雾心阅读 197评论 0 0