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

172. 阶乘后的零

作者: 吃饭用盘装 | 来源:发表于2018-06-06 22:46 被阅读30次

内容

给定一个整数 n,返回 n! 结果尾数中零的数量。

示例 1:

输入: 3
输出: 0
解释: 3! = 6, 尾数中没有零。
示例 2:

输入: 5
输出: 1
解释: 5! = 120, 尾数中有 1 个零.
说明: 你算法的时间复杂度应为 O(log n) 。


思路

这道题的思路其实就是找n!里有多少个5,具体为什么可以自己搜网上的解释
10!有10,5,两个5,就是两个0
100!有5,10,15,20,25,。。。95,100 ,从5-》100光看因子左边的5,一共有100/5=20个,然后再看因子右边也会产生5的,25,50,75,100,一共产生4个5,所以一共是20+4=24个5,也就是24个0

那么综合一下思路就是:先找5的倍数,再找55的倍数,再找55*5的倍数,再将这些值都加起来就是0的个数


代码

/**
这道题的思路其实就是找n!里有多少个5,具体为什么可以自己搜网上的解释
10!有10,5,两个5,就是两个0
100!有5,10,15,20,25,。。。95,100 ,从5-》100光看因子左边的5,一共有100/5=20个,然后再看因子右边也会产生5的,25,50,75,100,一共产生4个5,所以一共是20+4=24个5,也就是24个0

那么综合一下思路就是:先找5的倍数,再找5*5的倍数,再找5*5*5的倍数,再将这些值都加起来就是0的个数
 * @param {number} n
 * @return {number}
 */
var trailingZeroes = function (n) {
    var count = 0;
    while (n > 0) {
        n = parseInt(n / 5);
        count += n;
    }

    return count;
};

回到目录

相关文章

网友评论

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

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