当前位置:实例文章 » 其他实例» [文章]LeetCode 172.阶乘后的零

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 的数量,从而得出零的数量。它具有很好的时间和空间效率,适合大规模输入。

其他信息

其他资源

Top