3 的幂
概述:给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true ;否则,返回 false 。整数 n 是 3 的幂次方需满足:存在整数 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 Falsewhile n != 1:if n % 3 != 0:return Falsen /= 3return n == 1
方法三:递归(优化版)
思路:若被 3 整除,更新原整数,依次循环到 1 判断即可。
# 递归(优化版)
# 若被 3 整除,更新原整数,依次循环到 1 判断即可。
class Solution:def isPowerOfThree(self, n: int) -> bool:while n > 0 and n % 3 == 0:n //= 3return 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 Truereturn False
方法五:暴力循环
思路:设定一个初始整数,乘以 3 的倍数,然后循环判断即可。
# 暴力循环
# 设定一个初始整数,乘以 3 的倍数,然后循环判断即可。
class Solution:def isPowerOfThree(self, n: int) -> bool:ans = 1while ans < n:ans *= 3return ans == n
总结
简单题,就要多秀几种方法!