Leetcode题解之 —— 阶乘后的零
思路
很容易想到对n
作阶乘的算法, 但是会出现爆栈的情况, 看了下官方的题解, 只需要找到n
中5
的因子的个数即可
题解
首先想到的阶乘法
, 会出现Maximun stack...
的情况
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
function factorial(num) { return num === 1 ? 1 : num * factorial(num--); }
var trailingZeroes = function(n) { const factorialedNum = factorial(n); const stringedNum = String(factorialedNum);
let [count, result] = [stringedNum.length - 1, 0];
while (count >= 0) { if (~~(stringedNum[count])) { break; } result++; count--; }
return result; };
|
最优解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
var trailingZeroes = function (n) { let result = 0; let current = n;
while (current) { result += (n = ~~(n / 5)); current--; }
return result; };
|