3 的幂

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

输入:n = 27
输出:true

输入:n = 0
输出:false

输入:n = 9
输出:true

输入:n = 45
输出:false

方法一:约分

思路:设定一个上限值,然后判断是否被约分即可。

# 约分
# 设定一个上限值,然后判断是否被约分即可。
class Solution:
    def isPowerOfThree(self, n: int) -> bool:
        return n > 0 and 3 ** 30 % n == 0

方法二:递归

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

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

方法三:递归(优化版)

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

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

方法四:暴力循环

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

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

方法五:暴力循环

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

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

总结

简单题,就要多秀几种方法!

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐