Power of Four

Given an integer n, return true if it is a power of four. Otherwise, return false.

An integer n is a power of four, if there exists an integer x such that n == 4x.

Example 1:

Input: n = 16
Output: true

Example 2:

Input: n = 5
Output: false

Example 3:

Input: n = 1
Output: true

Constraints:

  • -231 <= n <= 231 - 1

Follow up: Could you solve it without loops/recursion?

Solutions

🧠 Cpp

#include <stdint.h>

class Solution
{
public:
    bool isPowerOfFour(unsigned num) 
    {
      return (__builtin_popcount(num) == 1) && (num & 0b01010101010101010101010101010101);
        // return num > 0 && (num & (num - 1)) == 0 && num & 0x55555555;
//         if (num == 1) // case for power of 0
//             return true;

//         for (uint32_t i = 1; (i <<= 2);)
//             if (i == num)
//                 return true;
//         return false;
    }
};

Last updated