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_阅读 60评论 0 1
  • 问题描述 Given an integer (signed 32 bits), write a function ...
    如烟花非花阅读 221评论 0 0
  • 原题 给出一个整数 (32 位), 写出一个函数判断它是不是4的次方数 样例:给出 num = 16, 返回 tr...
    Jason_Yuan阅读 146评论 0 0
  • 1 关键字 1.1 关键字的概述 Java的关键字对java的编译器有特殊的意义,他们用来表示一种数据类型,或...
    哈哈哎呦喂阅读 378评论 0 0
  • 如此空虚 为什么要活着?我活着的价值是什么? 我的家人,朋友——正能量的影响 我的理想,目标——人生长远的价值是?
    明雾心阅读 101评论 0 0
  • 原文有余志春撰写。 【第一天】自我介绍 关键词: 个人信息 兴趣爱好 近期目标 梦想 ![第一天][1] 【第二天...
    马骋阅读 488评论 0 0
  • 对于刚接触社会的我们,总会面对各种各样的质疑,在很多情况下,我们总会因为很多原因而受到责备与伤害,虽然它可能是一件...
    我最晴朗阅读 228评论 0 2