美文网首页
172. 阶乘后的零

172. 阶乘后的零

作者: 雇个城管打天下 | 来源:发表于2018-05-06 13:53 被阅读73次

    题目

    解析

    这道题的要求是计算n的阶乘后面0的个数,而且要求算法时间复杂度为logn,那么就绝对不是要人傻傻地做一遍阶乘再去做。

    思考一下,什么时候末尾才会出现0,我们知道只有25,或者n10的时候才会在末尾出现0,其实10也可以看做一种25,那么其实就是看我们这个n中包含多少个25了,而因为有5就一定会有2,因为5比2大,相反有2不一定有5,所以只需要考虑n中有多少个5就可以了。此外,对于25这个数,我们知道25*4=100,末尾会有两个0,而4也比5小,所以当出现25时,会加上两个0,也就是说答案还要加上有多少个25。以此类推,还要考虑125、625等等,所以这是一个需要递归来实现的过程。

    代码

    public class Solution {
        public int trailingZeroes(int n) {
            return n == 0 ? 0 : n/5 + trailingZeroes(n/5);
        }
    }
    

    相关文章

      网友评论

          本文标题:172. 阶乘后的零

          本文链接:https://www.haomeiwen.com/subject/kvhurftx.html