326.3的幂

发布时间 2023-11-11 15:48:36作者: Frommoon

题目

  • 给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true ;否则,返回 false 。

整数 n 是 3 的幂次方需满足:存在整数 x 使得 n == 3x

示例 1:

输入:n = 27
输出:true

示例 2:

输入:n = 0
输出:false

示例 3:

输入:n = 9
输出:true

示例 4:

输入:n = 45
输出:false

法一、迭代

class Solution:
    def isPowerOfThree(self, n: int) -> bool:
        while n > 1:   #不断让n除以3
            if n % 3 != 0:  #如果n不能被3整除
                return False  #返回False
            n //= 3   #n除以3后的商数赋给n
        return n == 1  #最后能不能被3整除,n为1表示能被整除,返回True,否则返回False
class Solution:
        def isPowerOfThree(self, n: int) -> bool:
        while n>=3:n/=3  #这个地方用/
        return True if n==1 else False
  • /:返回的是浮点数;//:返回的是向下取整的值
  • 5/3的结果为1.666666...,5//3的结果为1

法二、递归

class Solution:
    def isPowerOfThree(self, n: int) -> bool:
        if n==1:return True
        if (n == 0 or n % 3 != 0): return False
        return self.isPowerOfThree(n/3)