172. 阶乘后的零

给定一个整数 n,返回 n! 结果尾数中零的数量。

首先这一题的思路:想要有0出现,得有2和5同时出现;因为5比2大,所以2一定比5先出现多。也就是5的个数也就是0出现的次数。

基于这个思路,写了1.0算法,感觉这个两层循环不合理

func trailingZeroes(n int) int {
	if n < 5{
		return 0
	}
	count := 0
	for i:=5;i<=n;i=i+5{
		num := i
		for num % 5 == 0{
			count++
			num = num/5
		}
	}
	return count
}

通过一番研究,确实不合理,实在没必要一个一个的去统计5的个数,直接用n除以5就是5在n!中出现的次数,改进算法:

func trailingZeroes(n int) int {
	count := 0
	for n > 0 {
		n /= 5
		count += n
	}
	return count
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值