【leetcode】326. 3的幂

文章目录

    • 题目
    • 题解
      • [1. 循环](#1. 循环)
      • [2. 试除法](#2. 试除法)
      • [3. 判断是否为最大 3 的幂的约数](#3. 判断是否为最大 3 的幂的约数)

题目

326. 3的幂

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

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

示例 1:

输入:n = 27

输出:true

示例 2:

输入:n = 0

输出:false

示例 3:

输入:n = 9

输出:true

示例 4:

输入:n = 45

输出:false

题解

1. 循环

python 复制代码
class Solution(object):
    def isPowerOfThree(self, n):
        """
        :type n: int
        :rtype: bool
        """
        # 循环
        x = 0
        if 3 ** x == n:
            return True
        while 3 ** x < n:
            x += 1
        if 3 ** x == n:
            return True
        else:
            return False
        

2. 试除法

python 复制代码
class Solution(object):
    def isPowerOfThree(self, n):
        """
        :type n: int
        :rtype: bool
        """
        # 试除法
        while n and n % 3 == 0:
            n = n // 3
        return n == 1
        

3. 判断是否为最大 3 的幂的约数

python 复制代码
class Solution(object):
    def isPowerOfThree(self, n):
        """
        :type n: int
        :rtype: bool
        """
        # 判断是否为最大 3 的幂的约数
        return n > 0 and 1162261467 % n == 0