博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode] 342. Power of Four 4的次方数
阅读量:4988 次
发布时间:2019-06-12

本文共 2188 字,大约阅读时间需要 7 分钟。

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?

Credits:

Special thanks to for adding this problem and creating all test cases.

给一个有符号的32位整数,写一个函数检查此数是否为4的次方数。

解法1:位操作

解法2:循环

解法3: 数学函数, 换底公式

Java:

public boolean isPowerOfFour(int num) {    int count0=0;    int count1=0;     while(num>0){        if((num&1)==1){            count1++;        }else{            count0++;        }         num>>=1;    }     return count1==1 && (count0%2==0);}  

Java:

public boolean isPowerOfFour(int num) {    while(num>0){        if(num==1){            return true;        }         if(num%4!=0){            return false;        }else{            num=num/4;        }    }     return false;}

Java:

public boolean isPowerOfFour(int num) {   if(num==0) return false;    int pow = (int) (Math.log(num) / Math.log(4));   if(num==Math.pow(4, pow)){       return true;   }else{       return false;   }}

Python:

class Solution(object):    def isPowerOfFour(self, num):        """        :type num: int        :rtype: bool        """        return num > 0 and (num & (num - 1)) == 0 and \               ((num & 0b01010101010101010101010101010101) == num)

Python:

# Time:  O(1)# Space: O(1)class Solution2(object):    def isPowerOfFour(self, num):        """        :type num: int        :rtype: bool        """        while num and not (num & 0b11):            num >>= 2        return (num == 1)

C++:

class Solution {public:    bool isPowerOfFour(int num) {        while (num && (num % 4 == 0)) {            num /= 4;        }        return num == 1;    }};

C++:

class Solution {public:    bool isPowerOfFour(int num) {        return num > 0 && int(log10(num) / log10(4)) - log10(num) / log10(4) == 0;    }};

C++:

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

C++:  

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

   

类似题目:

 

转载于:https://www.cnblogs.com/lightwindy/p/9049105.html

你可能感兴趣的文章
多语言切换
查看>>
Heartbeat(注意iptables和selinux的问题)
查看>>
[FZYZOJ 1859] 建桥
查看>>
osgearth+vs2010安装
查看>>
uva227puzzle模拟
查看>>
决定360浏览器以极速模式、兼容模式、IE标准模式打开的代码
查看>>
Java 文件上传与下载、email
查看>>
数据库中函数和存储过程的区别
查看>>
8 个必备的PHP功能开发
查看>>
iOS开发之资讯类App常用分类控件的封装与实现(CollectionView+Swift3.0+)
查看>>
在JS中:如何让三个未知数倒序显示,求100~1000以内的水仙花数方法:
查看>>
iOS -NSArray
查看>>
dom中表格操作
查看>>
Centos7安装Typecho详细教程
查看>>
Object Death in Garbage Collector's Perspective
查看>>
Redis基础知识之————使用技巧(持续更新中.....)
查看>>
feathers button 支持中文(非bitmap字体)
查看>>
帖子收藏
查看>>
scrapy安装教程
查看>>
装饰器
查看>>