题目
给定一个整数 n,返回 n! 结果尾数中零的数量。
示例 1:
输入: 3
输出: 0
解释: 3! = 6, 尾数中没有零。
示例 2:
输入: 5
输出: 1
解释: 5! = 120, 尾数中有 1 个零.
说明: 你算法的时间复杂度应为 O(log n) 。
解法一(直接计算)
思路:看这个时间复杂度要求,首先不能是进行乘法然后再对10进行求余判断,其实也排除了从1到N依次对每个值进行判断(这样的时间复杂度是O(n))。
分析之后发现,只要出现5就一定会出现结尾多一个0,那么现在的问题就变成了1-N有多少个5的乘法因子。
- 先获取5的倍数
- 由于5的幂次存在多次运算的情况,因此,对5的幂次进行补充增加,每使用一次幂次就增加一次累计
- 时间复杂度:O( l o g 5 ( n ) log_5(n) lo