LeetCode 342 4的幂[循环 递归 位运算] HERODING的LeetCode之路

Posted HERODING23

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 342 4的幂[循环 递归 位运算] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。

在这里插入图片描述解题思路:
首先例行使用循环和递归的方式解决该题,代码如下:

class Solution {
public:
    bool isPowerOfFour(int n) {
        if(n < 1) {
            return false;
        }
        if(n == 1) {
            return true;
        }
        if(n % 4 == 0) {
            return isPowerOfFour(n / 4);
        } else {
            return false;
        }
    }
};
class Solution {
public:
    bool isPowerOfFour(int n) {
        if(n < 1) {
            return false;
        }
        while(n > 1) {
            if(n % 4 == 0) {
                n /= 4;
            } else {
                return false;
            }
        }
        return true;
    }
};

但是往往这种简单的题目还是有技巧可循的,位运算可以帮助我们理解,我们知道4的幂次方一定是2的幂次方,那么首先最后一位一定是0,其次如果是2的幂不是4的幂,那么一定可以换算成4^n * 2的情况,这时候与3取余一定是2,否则一定是1,代码如下:

class Solution {
public:
    bool isPowerOfFour(int n) {
       return n > 0 && (n&(n - 1)) == 0 && n % 3 == 1;
    }
};

以上是关于LeetCode 342 4的幂[循环 递归 位运算] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章

leetcode刷题笔记342 4的幂

342 Power of Four 4的幂

LeetCode342. 4的幂(C++)

LeetCode342. 4的幂 / 第243场周赛

[LeetCode] 342. 4的幂

leetcode342合理运用位操作判断4的幂