342.4的幂

https://leetcode-cn.com/problems/power-of-four/

思路:一个数是4的幂,其1必然在偶数位上,且在最高位

1  =       1
4  =     100
16 =   10000
64 = 1000000

技巧:

第一个条件:1在偶数位

用一个32位二进制mask和n与操作,mask每个奇数位为1,偶数位为0(最右边为第0位)。

mask = 10101010101010101010101010101010

与操作结果为0,说明n的奇数位没有1

第二个条件:最高位为1

根据

231.2的幂的解法,即判断二进制,看 n & (n-1) 是否为 0

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

最后更新于