4的幂
2020-06-23 本文已影响0人
WAI_f
题目:
给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方。
示例:
输入: 16
输出: true
解题方法:
位运算的题目感觉运行效率都很高,做出来的基本上都是双百,感觉美滋滋!这道题说一下思路:
- 先排除小于等于0的输入,这类值肯定不是4的幂;
- 然后就是判断数据右移两位再左移两位后与原始数据是否相等,也就是x/4*4是否等于x。如果相等,就x=x/4循环判断;如果不相等,说明不是4的倍数,那肯定不是4的幂,直接返回false。
代码和结果:
class Solution {
public:
bool isPowerOfFour(int num) {
if(num<=0)
return false;
while(num!=1)
{
if((num>>2<<2)!=num)
return false;
num>>=2;
}
if(num==1)
return true;
else
return false;
}
};
运行结果: