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)
最后更新于