每日一题之阶乘后的零
阶乘后的零
给定一个整数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!