每日一题之阶乘后的零
阶乘后的零
给定一个整数n,返回n!结果尾数中零的数量。
示例1:
1 | 输入: 3 |
示例2:
1 | 输入: 5 |
说明:你算法的时间复杂度应为 O(log n) 。
解题思路:
10 -> 2*5
2的数量肯定比5要多
我们只需要计算5的个数即可
n | count | size |
---|---|---|
5 | 1 | 1 |
10 | 2 | 1 |
15 | 3 | 1 |
20 | 4 | 1 |
25 | 6 | 2 |
30 | 7 | 1 |
35 | 8 | 1 |
40 | 9 | 1 |
45 | 10 | 1 |
50 | 12 | 2 |
55 | 13 | 1 |
60 | 14 | 1 |
… | … | … |
125 | 3 |
开始计算含有1个5的个数:n/5
就得到含有一个5的个数,然后将已经计算过一次的数排除n/=5
现在得到含有2个5的数,也就是25的倍数的数
开始计算含有2个5的数的个数:n/5
…
直到n=0,代表,一个数都没有了,结束
代码:
1 | public int trailingZeroes(int n) { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 YD Blog!