阶乘后的零

🎯 问题描述(来源于LeetCode)

1
2
给定一个整数n,返回 n! 结果中尾随零的数量。
提示 n! = n * (n - 1) * (n - 2) * ... * 3 * 2 * 1

💻 代码实现

零的数量有2和5的对数决定,将问题转化求因子2的个数和因子5的个数,返回其最小值,但由于5的个数必定小于2的个数,所以只求5的个数

1
2
3
4
5
6
7
8
9
10
class Solution:
def trailingZeroes(self, n: int) -> int:
if n<5:
return 0
m=0
a=5
while a<=n:
m+=n//a
a*=5
return m

📊 性能分析

提交结果

  • 运行时间:0ms击败100.00%
  • 内存消耗:17.40MB击败71.44%

复杂度验证

  • 时间复杂度:O(Logn)O(Logn)
  • 空间复杂度:O(1)O(1)