180 字
1 分钟
326. 3 的幂

Problem#

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

如果存在一个整数 x 使得 n == 3ˣ,则认为 n 是 3 的幂次方。

https://leetcode.cn/problems/power-of-three/description/

示例 1:

输入:n = 27 输出:true

示例 2:

输入:n = 0 输出:false

示例 3:

输入:n = 9 输出:true

约束:

  • -2³¹ <= n <= 2³¹ - 1

思路#

循环除以 3,直到不能整除为止,最后判断是否等于 1。

class Solution:
def isPowerOfThree(self, n: int) -> bool:
if n <= 0:
return False
while n % 3 == 0:
n //= 3
return n == 1
import unittest
class TestIsPowerOfThree(unittest.TestCase):
def setUp(self):
self.solution = Solution()
def test_twentyseven(self):
self.assertTrue(self.solution.isPowerOfThree(27))
def test_nine(self):
self.assertTrue(self.solution.isPowerOfThree(9))
def test_zero(self):
self.assertFalse(self.solution.isPowerOfThree(0))
def test_not_power(self):
self.assertFalse(self.solution.isPowerOfThree(45))
def test_negative(self):
self.assertFalse(self.solution.isPowerOfThree(-3))
if __name__ == '__main__':
unittest.main()
326. 3 的幂
https://h1s97x.github.io/posts/coding/coding-326-power-of-three/
作者
H1S97X
发布于
2024-11-09
许可协议
CC BY-NC-SA 4.0
随机文章