[LeetCode By Python] 342. Power of Four

一、题目

[LeetCode By Python] 342. Power of Four_第1张图片
Power of Four

二、解题

输入:给出一个32位的有符号数
输出:判断是否是4的阶乘

不能用循环和递归,首先想到是的对数函数,结果竟然给过了- -。(要进行<0的边界判断),判断是否是4的阶乘,把对数的结果转化为int,判断和原来的数是否相同(不是4的阶乘不会是一个整数)

三、尝试与结果

import math
class Solution(object):
    def isPowerOfFour(self, num):
        if num <=0:
            return False
        a = math.log(num,4)
        if int(a) == a:
            return True
        else:
            return False

结果:AC

四、学习与记录

class Solution(object):
    def isPowerOfFour(self, num):
        if num <=0:
            return False
        if num == 1:
            return True
        if (num -1)%3 == 0 and num & (num-1) == 0:
            return True
        else:
            return False

说明:也是从数学的角度出发,数num是4的阶乘需要满足的条件是
1)(num -1)%3 == 0
2)num & (num-1) == 0

你可能感兴趣的:([LeetCode By Python] 342. Power of Four)