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;
    }
};

运行结果:


原题链接:https://leetcode-cn.com/problems/power-of-four/

上一篇 下一篇

猜你喜欢

热点阅读