LeetCode172.阶乘后的零Golang版
1. 题目描述
给定一个整数 n,返回 n! 结果尾数中零的数量。
示例 1:
输入: 3
输出: 0
解释: 3! = 6, 尾数中没有零。
示例 2:
输入: 5
输出: 1
解释: 5! = 120, 尾数中有 1 个零.
说明: 你算法的时间复杂度应为 O(log n)
2. 思路
2.1 思路1
直接算出阶乘结果的话,必然会有发生上溢出。
2.2. 思路2
观察乘数因子,比如6!= 6 * 5 * 4 * 3 * 2 * 1,只有2*5会导致阶乘计算结果的结尾为0,而因子2的数量要远比因子5的数量多。于是,阶乘结果0的个数取决于因子中5的个数。
3. 代码
func trailingZeroes(n int) int {
count := 0
for n >= 5 {
count = count + n / 5
n /= 5
}
return count
}
本文介绍了一种高效的算法来计算n!结果尾数中零的数量。通过分析乘数因子,发现结果中零的数量由因子5决定。提供了一段Golang代码实现,采用O(logn)的时间复杂度进行计算。
1456

被折叠的 条评论
为什么被折叠?



