阶乘后的零

题目链接: https://leetcode.cn/problems/factorial-trailing-zeroes

解题思路:

  1. 首先判断 nn 是否小于 55,如果是,则返回 00,因为小于 55 的数的阶乘后不会有零

  2. 否则,将 nn 除以 55,得到商和余数。商表示 nn 中包含 55 的个数,余数表示 nn 中包含 2525 的个数,以此类推

  3. 然后,将商和余数分别传递给递归函数 trailingZeroes,计算商和余数的阶乘后的零的个数

  4. 最后,将商和余数的阶乘后的零的个数相加,得到 nn 的阶乘后的零的个数

func trailingZeroes(n int) int {
	if n < 5 {
		return 0
	}

	return n/5 + trailingZeroes(n/5)
}

复杂度分析

  • 时间复杂度: 时间复杂度是 O(log10n)O(\log_{10} n),其中 nn 是输入的整数

  • 空间复杂度: 空间复杂度是 O(1)O(1)

最后更新于