[LeetCode] 342. Power of Four

来源:互联网 发布:淘宝api 获取卖家订单 编辑:程序博客网 时间:2024/05/16 23:51

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?

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

首先,易知,如果一个数是4的幂次方,那么这个数必然是2的偶数次幂

分解开来,就是要满足两点
1. 必须是2的幂次方
2. 必须是偶数次幂

从二进制的角度来看,就是要仅有一个bit位置1,且这个bit位必须是偶数偏移。

对于第一点要求而言,n & (n - 1) == 0即可。具体分析参见另一篇blog。
对于第二点要求而言,与上(01010101010101010101010101010101)这样一个bitmask即可,其只在偶数偏移的位置上置位。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 高铁票三个小孩怎么办 12306取消三次后怎么办 外国人护照过期了怎么办 行李丢飞机上怎么办 学生票没次数了怎么办 去美国行李超重怎么办 12306密码找回失败怎么办 12306注册身份重复怎么办 12306身份信息重复怎么办 必修课没有选上怎么办 大学错过了选课怎么办 大学忘记选课了怎么办 火车网上购票儿童票怎么办 售票厅看见小偷怎么办 没赶上火车火车票怎么办 重庆到韩国签证怎么办 重庆去韩国签证怎么办 重庆办韩国签证怎么办 故宫网上预定后怎么办 坐游轮如果晕船怎么办 听听力反应慢怎么办? 毕业证照片丢了怎么办 离线网盘有违规内容怎么办 手机不能向下拉怎么办 cad运行不了插件怎么办 ai中缺少文字怎么办 电脑被格式化了怎么办 迷你世界地图下载失败怎么办 网页上广告太多怎么办 网页打开广告太多怎么办 PS界面图标小怎么办 百度地图反应慢怎么办 汽车导航不播报怎么办 wps菜单栏隐藏了怎么办 手机导航声音小怎么办 手机导航不好用怎么办 手机导航箭头不准怎么办 手机处于离线状态怎么办 穷人让人看不起怎么办 非洲人口过多怎么办啊 鼻子上长白头怎么办