172. 阶乘后的零

题目

解析

这道题的要求是计算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);
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 【1】7,9,-1,5,( ) A、4;B、2;C、-1;D、-3 分析:选D,7+9=16;9+(-1)=8;(...
    Alex_bingo阅读 19,627评论 1 19
  • 雨珠懒洋洋的趴在玻璃窗上,生出好看的雾气,淡淡的白色夹杂着一丝寒气,在车里蔓延开来,没有人注意到外面的风景,不远处...
    夏初晨阅读 3,255评论 4 4
  • 今天去山上采风了。 风很大天很凉,明明是大晴天却感觉不到一丝暖意。 坐着老板的车翻山越岭一路瞎晃。特别是一路爬山路...
    一颗花菜阅读 2,472评论 0 0
  • 初见时你给我你的心 里面是一个春天的早晨 再见时你给我你的话 说不出的是炽烈的火夏 三次见你你给我你的手 里面藏着...
    在期待阅读 1,346评论 0 0

友情链接更多精彩内容