LeetCode172.阶乘后的零Golang版

本文介绍了一种高效的算法来计算n!结果尾数中零的数量。通过分析乘数因子,发现结果中零的数量由因子5决定。提供了一段Golang代码实现,采用O(logn)的时间复杂度进行计算。

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
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值