2. 尾部的零 (JavaScript)
题目
设计一个算法,计算出n阶乘中尾部零的个数 样例 11! = 39916800,因此应该返回 2 挑战 O(logN)的时间复杂度
思路
如果直接累乘查找最后的0是不可取的,不满足时间复杂度。
如果要满足尾部的零,拆开公式肯定是 * 10。
10的话分为 2 * 5,然后把阶乘拆成最小公因式,我们只要计算公式里面有多少个5就可以了
代码
/**
* @param n: A long integer
* @return: An integer, denote the number of trailing zeros in n!
*/
const trailingZeros = function (n) {
//计算有多少个5
var count = 0;
//如果temp>0继续分解,否则直接return
var temp = parseInt(n/5);
while (temp != 0) {
count += temp;
temp = parseInt(temp / 5);
}
return count;
}

浙公网安备 33010602011771号