'''
4的幂
给定一个整数，写一个函数来判断它是否是 4 的幂次方。如果是，返回 true ；否则，返回 false 。

整数 n 是 4 的幂次方需满足：存在整数 x 使得 n == 4x

 

示例 1：

输入：n = 16
输出：true
示例 2：

输入：n = 5
输出：false
示例 3：

输入：n = 1
输出：true
 

提示：

-2^31 <= n <= 2^31 - 1
 

进阶：

你能不使用循环或者递归来完成本题吗？
'''
'''
思路：位运算
先使用231.[2 的幂](easy/231-power-of-two.py)的思路，数据首先要满足是2的幂
然后1要出现在奇数位，可以与0x55555555进行与操作值，结果与n相同

时间复杂度：O(1)
空间复杂度：O(1)
'''


class Solution:
    def isPowerOfFour(self, n: int) -> bool:
        return n > 0 and n & (n - 1) == 0 and (n & 0x55555555) == n

'''
4的幂
给定一个整数，写一个函数来判断它是否是 4 的幂次方。如果是，返回 true ；否则，返回 false 。

整数 n 是 4 的幂次方需满足：存在整数 x 使得 n == 4x

 

示例 1：

输入：n = 16
输出：true
示例 2：

输入：n = 5
输出：false
示例 3：

输入：n = 1
输出：true
 

提示：

-2^31 <= n <= 2^31 - 1
 

进阶：

你能不使用循环或者递归来完成本题吗？
'''
'''
思路：位运算
先使用231.[2 的幂](easy/231-power-of-two.py)的思路，数据首先要满足是2的幂
然后1要出现在奇数位，可以与0x55555555进行与操作值，结果与n相同

时间复杂度：O(1)
空间复杂度：O(1)
'''


class Solution:
    def isPowerOfFour(self, n: int) -> bool:
        return n > 0 and n & (n - 1) == 0 and (n & 0x55555555) == n

4的幂 给定一个整数，写一个函数来判断它是否是 4 的幂次方。如果是，返回 true ；否则，返回 false 。  整数 n 是 4 的幂次方需满足：存在整数 x 使得 n == 4x     示例 1：  输入：n = 16 输出：true 示例 2：  输入：n = 5 输出：false 示例 3：  输入：n = 1 输出：true    提示：  -2^31 <= n <= 2^31 - 1    进阶：  你能不使用循环或者递归来完成本题吗？ 思路：位运算 先使用231.[2 的幂](easy/231-power-of-two.py)的思路，数据首先要满足是2的幂 然后1要出现在奇数位，可以与0x55555555进行与操作值，结果与n相同  时间复杂度：O(1) 空间复杂度：O(1)