给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方。

    示例 1:

    输入: 16
    输出: true
    示例 2:

    输入: 5
    输出: false
    进阶:
    你能不使用循环或者递归来完成本题吗?

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/power-of-four

    思路:
    不使用循环或者递归来完成,那么则可以用位运算计算,首先4的幂必然也是2的幂,所以需要通过以下式子来判断:
    num > 0 && (num & (num - 1)) === 0
    然后对于4的幂,则由模运算的分配率a * b % 3 === (a % 3) * (b % 3),可得
    4````%3 === 1

    以上两个式子同时满足则为4的幂。
    复杂度分析:
    时间复杂度O(1)
    空间复杂度O(1)

    1. var isPowerOfFour = function(num) {
    2. return num > 0 && (num&(num-1)) === 0 && num % 3 ===1;
    3. };