342.4的幂

90 阅读1分钟

342.4的幂

给定一个整数 (32 位有符号整数),编写一个函数来判断它是否是 4 的幂。不使用循环或者递归。

class Solution:
    def isPowerOfFour(self, num: int) -> bool:
        return num > 0 and num & (num - 1) == 0 and num % 3 == 1
"""
位运算 + 数学运算
若 x 为 2 的幂且 x%3 == 1,则 x 为 4 的幂。
先检查 x 是否为 2 的幂:x > 0 and x & (x - 1) == 0。
true时, x = 2^a,若 x 为 4 的幂则 a 为偶数。
下一步是考虑 a=2k 和 a=2k+1 两种情况,x对3取模:
a=2k时     x % 3 == 1   是4的幂
a=2k+1时   x % 3 == 2   不是4的幂
"""