[位运算][数学]leetcode342:4的幂(easy)

题目:
在这里插入图片描述
题解:

  • 题解1:数学方法+位运算,为4的幂,那么n也为2的幂,n若为2的幂,那么n&(n-1)=0,否则不为2的幂就为1。
  • 题解2:迭代法
  • 题解3:递归法

相似题型:
231. 2的幂
326. 3的幂

代码如下:

class Solution {
public:
    //题解1:数学方法
    bool isPowerOfFour_1(int n) {
        if(n<0||n&(n-1))return false;//n为4的幂,那么n也为2的幂,n若为2的幂,那么n&(n-1)=0,否则不为2的幂就为1
        return n%3==1;//直接判断n取余3是否为1即可
    }

    //题解2:迭代法
    bool isPowerOfFour_2(int n){
        if(n<1)return false;//4的幂必须为正数
        while(n%4==0)n/=4;//直到n%4不为0时跳出,若n为4的幂,那么n为1时跳出;否则n不为4的幂,那么n为一个奇数时跳出,所以我们只需要判断最后n是否等于1即可
        return n==1;
    }

    //题解3:递归法
    bool isPowerOfFour(int n){
        if(n==0)return false;
        if(n==1)return true;
        return n>0&&isPowerOfFour(n/4)&&n%4==0;
    }
};
发布了484 篇原创文章 · 获赞 149 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/qq_43152052/article/details/103740039