LeetCode 172.阶乘后的零
发布人:shili8
发布时间:2024-12-26 09:12
阅读次数:0
**LeetCode172. 阶乘后的零**
### 题目描述给定一个整数 `n`,返回 `n` 的阶乘后有多少个零。
### 示例* 输入:`3`
输出:`1`
* 输入:`4`
输出:`2`
* 输入:`5`
输出:`1`
### 思路这个问题可以通过计算 `n` 的阶乘中5 和2 的数量来解决。因为5 和2 是10 的因数,而10 是0 的因数。
我们只需要计算5 的数量,因为每个5 都对应一个2,形成一个10,从而产生一个零。
###代码
class Solution: def trailingZeroes(self, n: int) -> int: # 计算 n 的阶乘中5 的数量 count =0 i =5 while n // i >=1: count += n // i i *=5 return count# 测试solution = Solution() print(solution.trailingZeroes(3)) # 输出:1print(solution.trailingZeroes(4)) # 输出:2print(solution.trailingZeroes(5)) # 输出:1
### 解释* 我们首先定义一个 `Solution` 类,包含一个 `trailingZeroes` 方法。
* 在这个方法中,我们使用一个循环来计算 `n` 的阶乘中5 的数量。我们从5 开始,因为每个5 都对应一个2,从而形成一个10 和一个零。
* 每次循环中,我们将 `i` 乘以5,直到 `n // i` 小于或等于1。
* 在每次循环中,我们将 `count` 加上 `n // i`,因为每个5 都对应一个零。
* 最后,我们返回 `count`。
### 复杂度* 时间复杂度: O(log n)
* 空间复杂度: O(1)
### 总结这个解决方案使用一个循环来计算 `n` 的阶乘中5 的数量,从而得出零的数量。它具有很好的时间和空间效率,适合大规模输入。