LeetCode-342. Power of Four

Description

Given an integer (signed 32 bits), write a function to check whether it is a power of 4.

Example

Given num = 16, return true. Given num = 5, return false.

Follow Up

Could you solve it without loops/recursion?

Solution 1(C++)

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

Solution 2(C++)

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

Solution 3(C++)

class Solution {
public:
    bool isPowerOfFour(int num) {
        if(num <= 0)
            return false;
        else
            return ((!(num&(num-1))) && (num & 0x55555555));
    }
};

算法分析

LeetCode-231. Power of Two;
LeetCode-326. Power of Three。

程序分析

略。

你可能感兴趣的:(LeetCode,LeetCode,Bit,Manipulation)