Appearance
172. 阶乘后的零
原题链接:LeetCode 172. 阶乘后的零
题目描述
给定一个整数 n ,返回 n! 结果中尾随零的数量。
提示 n! = n * (n - 1) * (n - 2) * ... * 3 * 2 * 1
示例 1:
**输入:**n = 3 **输出:**0 **解释:**3! = 6 ,不含尾随 0
示例 2:
**输入:**n = 5 **输出:**1 **解释:**5! = 120 ,有一个尾随 0
示例 3:
**输入:**n = 0 **输出:**0
提示:
0 <= n <= 104
进阶:你可以设计并实现对数时间复杂度的算法来解决此问题吗?
难度: Medium
题解代码
javascript
/**
* @param {number} n
* @return {number}
*/
/**
* @param {number} n
* @return {number}
*/
// var trailingZeroes = function(n) {
// // 这种方法正确但是超时
// const dp = Array(n + 1).fill(BigInt(1))
// for (let i = 1; i <= n; i++) {
// dp[i] = BigInt(BigInt(dp[i - 1]) * BigInt(i))
// }
// const str = BigInt(dp[n]).toString()
// let len = str.length
// let res = 0
// while(str[--len] === '0') {
// res += 1
// }
// return res
// };
var trailingZeroes = function (n) {
let res = 0
for (let i = 5; i <= n; i += 5) {
let pow = 5
// 通过检查 i 是否可以被 5,25,125等整除。
while (i % pow === 0) {
res += 1
pow *= 5
}
}
return res
}