木又连续日更第52天(52/100)
木又的第195篇leetcode解题报告
数学
类型第11篇解题报告
leetcode第326题:3的幂
https://leetcode-cn.com/problems/power-of-three/
【题目】
给定一个整数,写一个函数来判断它是否是 3 的幂次方。
示例 1:
输入: 27
输出: true
示例 2:
输入: 0
输出: false
示例 3:
输入: 9
输出: true
示例 4:
输入: 45
输出: false
进阶: 你能不使用循环或者递归来完成本题吗?
【思路】
进行循环:只要n == 1,返回True;n%3 != 0,返回False;否则,n /= 3。
还有一个直观的想法,求log(10, 3),即ln(n) / ln(3)。但是如何判断该数是否是整数?我实在没有找到好的方案。
今天在网上查,有一个很棒的想法,得到int类型最大的3^m ,比如3^19 ,那么所有3^m' 都能被该数整除,而其他数不能(因为3是素数)。
【代码】
python版本
不断除3
class Solution(object):
def isPowerOfThree(self, n):
"""
:type n: int
:rtype: bool
"""
if n == 0:
return False
while n > 0:
if n == 1:
return True
if n % 3 != 0:
return False
n /= 3
求余
class Solution(object):
def isPowerOfThree(self, n):
return (n > 0) and (3 ** 20 % n == 0)
前一篇文章:T194-缺失数字