LeetCode:342(Python)—— 4 的幂(简单)

4 的幂

概述:给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false 。整数 n 4 的幂次方需满足:存在整数 x 使得 n == 4x 

输入:n = 16
输出:true

输入:n = 5
输出:false

输入:n = 1
输出:true

方法一:递归

思路:设定好边界条件,然后依次递归到最小值,判断即可。

# 递归
# 设定好边界条件,然后依次递归到最小值,判断即可。
class Solution:
    def isPowerOfFour(self, n: int) -> bool:
        if n <= 0:
            return False
        while n != 1:
            if n % 4 != 0:
                return False
            n /= 4
        return n == 1

方法二:递归(优化版)

思路:若被 4 整除,更新原整数,依次循环到 1 判断即可。

# 递归(优化版)
# 若被 4 整除,更新原整数,依次循环到 1 判断即可。
class Solution:
    def isPowerOfFour(self, n: int) -> bool:
        while n > 0 and n % 4 == 0:
            n //= 4
        return n == 1

方法三:暴力循环

思路:用 math.pow() 方法计算幂值,依次循环判断即可。

# 暴力循环
# math.pow()方法计算幂值,依次循环判断即可。
class Solution:
    def isPowerOfFour(self, n: int) -> bool:
        for i in range(31):
            if math.pow(4, i) == n:
                return True
        return False

方法四:暴力循环

思路:设定一个初始整数,乘以 4 的倍数,然后循环判断即可。

# 暴力循环
# 设定一个初始整数,乘以 4 的倍数,然后循环判断即可。
class Solution:
    def isPowerOfFour(self, n: int) -> bool:
        ans = 1
        while ans < n:
            ans *= 4
        return ans == n

总结

硬是打了31个1和0!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值