172. Factorial Trailing Zeroes
2021-08-18 本文已影响0人
jluemmmm
给定一个整数n,返回 n! 结果中零的数量。
计算结果中0的个数,实际是计算n! 中10的数目,需要看执行乘法的过程中,有多少 2 和 5的因子的数。比如当n = 16,包含5因子的数字实5,10,15,包含2的因子的数字是2,4,6,8,10,12,14,因为只有三个完整的对,因此16之后有3个0。
实际上,包含2的因子的数字一定比包含5的因子的数字多,因此无需对包含2的因子的数目进行计算。
- 时间复杂度O(n),空间复杂度O(1)
- Runtime: 72 ms, faster than 91.82%
- Memory Usage: 40.3 MB, less than 51.42%
/**
* @param {number} n
* @return {number}
*/
var trailingZeroes = function(n) {
let res = 0;
for (let i = 5; i <= n; i += 5) {
let powerOf5 = 5;
while (i % powerOf5 === 0) {
res++;
powerOf5 *= 5;
}
}
return res;
};
- 时间复杂度O(logn),空间复杂度O(1)
- Runtime: 84 ms, faster than 48.75%
- Memory Usage: 40.2 MB, less than 51.42%
/**
* @param {number} n
* @return {number}
*/
var trailingZeroes = function(n) {
let res = 0;
while (n > 0) {
n = Math.floor(n / 5);
res += n;
}
return res;
};