时间:2020-05-22
题目地址:https://leetcode-cn.com/problems/factorial-trailing-zeroes/
题目难度:Easy
题目描述:
给定一个整数 n,返回 n! 结果尾数中零的数量。
示例 1:
输入: 3
输出: 0
解释: 3! = 6, 尾数中没有零。
示例 2:
输入: 5
输出: 1
解释: 5! = 120, 尾数中有 1 个零.
说明: 你算法的时间复杂度应为 O(log n) 。
思路1:算阶乘、取余算0的个数
代码段1:要求时间复杂度应为 O(log n),我这就没继续写了
思路2:每次尝试5的幂
代码段2:通过
class Solution:
def trailingZeroes(self, n: int) -> int:
i, result = 1, 0
while(n >= 5**i):
i +=1
while(i):
result += (n//5**i)
i -= 1
return result
总结:
- 这明显是重复了,可优化的太多了,时间复杂度O(n),空间复杂度O(1)
思路3:每次尝试除以5
代码段3:通过
class Solution:
def trailingZeroes(self, n: int) -> int:
result = 0
while(n >= 5):
result += n//5
n /= 5
return int(result)
总结:
- 时间复杂度O(logn),空间复杂度O(1)