内容
给定一个整数 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;
};
网友评论