📝题目
1 | 给定一个整数 n,返回 n! 结果尾数中零的数量。 |
说明: 算法的时间复杂度应为 O(log n) 。
📝思路
观察1!, 2!, 3!, 4!, 5!...
,可以看出从5!
开始尾数有一个零,10!
开始尾数有两个零,15!
开始尾数有三个零…可以猜测我们的算法将从因子5
下手,最开始的想法是return n / 5
(不过当然不可能是这种干脆利落的O(1)
啦),当从25!
开始时,因为25
可以拆分成5*5
,因此此时是return n / 5 + 1
…可以进一步猜测结果与5
的幂次有关。更详细的题解戳这里。
📝题解
1 | int trailingZeroes(int n) { |
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.