LeetCode 342. Power of Four
2016-06-16 10:37
267 查看
问题描述:
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?
首先直观解法:
bool isPowerOfFour(int num)
{
if(num <= 0)
return false;
while(num && (num % 4 == 0))
{
num = num / 4;
}
return (num == 1);
}
其次分析规律,4的次幂,
1(1)、4(100)、16(10000)······
二进制表示中只有一位为1,并且只最高位,并且为奇数位。
依据2的次幂的解法,就是多了一个最高位为奇数位的判断,与 0x55555555相与就行了。
bool isPowerOfFour(int num)
{
if(num <= 0)
return false;
if( !(num & (num-1)))
{
if(num & 0x55555555)
return true;
}
return false;
}
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?
首先直观解法:
bool isPowerOfFour(int num)
{
if(num <= 0)
return false;
while(num && (num % 4 == 0))
{
num = num / 4;
}
return (num == 1);
}
其次分析规律,4的次幂,
1(1)、4(100)、16(10000)······
二进制表示中只有一位为1,并且只最高位,并且为奇数位。
依据2的次幂的解法,就是多了一个最高位为奇数位的判断,与 0x55555555相与就行了。
bool isPowerOfFour(int num)
{
if(num <= 0)
return false;
if( !(num & (num-1)))
{
if(num & 0x55555555)
return true;
}
return false;
}
相关文章推荐
- Android Studio下使用NDK
- 【ROS Gazebo专题】三、Gazebo的使用下
- wincachegrind配合Xdebug优化php 程序
- CSS3文本和字体
- 基于树莓派的Spark集群搭建
- HTTP协议
- 《Android深入透析》之常用设计模式经验谈
- HTTP协议的头信息详解
- cxLookupComboBox使用方法
- SQL查询月、天、周、年(MySql的实例对比)
- XTUOJ 1246 Heartstone 贪心
- linux中利用sandbox自动安装MySQL
- public/private/protected的具体区别
- Oracle 多表查询
- “机器学习”相关资料分享
- 微信表情的字符编号完整版【图文并茂哦!】
- 获得浏览器版本信息
- VB.net学习笔记(三十)认识线程池
- Hadoop2.2.0安装配置手册!完全分布式Hadoop集群搭建过程~(心血之作啊~~) .
- UIDynamic