2018-05-17 342. Power of Four

题意:给你一个数,判断该数是不是4的次幂( check whether it is a power of 4).
解题思路:是4的次幂的数依次是1,4,16,64,512...
转换成二进制就是
1:1
4:100
16:10000
64:1000000
512:100000000
所以满足4的次幂的数:首先得是正数,而且有且仅有一个二进制位为1,又由于4%3==1, (44)%3 = ((4%3)(4%3))%3= 1.即4n %3 = (4%3)n %3 =1.
需要注意的是操作符的优先级,位操作符(与或非亦或)优先级排在相等==操作符后面,所以位操作需要加括号。
时间复杂度:O(1)
空间复杂度:O(1)

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

或者不适用取余操作,直接对位进行操作

 public boolean isPowerOfFour(int num) {
        return num > 0 && (num&(num-1)) == 0 && (num & 0x55555555) != 0;
        //0x55555555 is to get rid of those power of 2 but not power of 4
        //so that the single 1 bit always appears at the odd position 
    }

0x55555555 is 1010101010101010101010101010101 in binary with a length of 32.仅有一位1并且落在这些相应的位上的数一定是4的次幂数。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,663评论 0 13
  • •1 C语言程序的结构认识 用一个简单的c程序例子,介绍c语言的基本构成、格式、以及良好的书写风格,使读者对c语...
    CONLYOUC阅读 8,913评论 9 66
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,762评论 0 5
  • 一、Java 简介 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计...
    子非鱼_t_阅读 4,684评论 1 44
  • 阴雨,心里有了草,是那种蓬勃的呼喊阳光的草。云低低地压下来,压出了风,风轻盈掠过草尖,留下潮湿的叹息。草懂得叹息里...
    无锡赵文阅读 319评论 0 1

友情链接更多精彩内容