LeetCode 172. 阶乘后的零
题目描述
解题思路
class Solution {
public int trailingZeroes(int n) {
//思路
//计算阶乘后为零的个数 因为2 * 5 = 10
//转换成求n!中2和5因子的个数,由于任意的偶数都可以分解出因子2,即求n!中因子5的个数。
// n/5可以得到n!中5的倍数的个数
// n/25可以得到n!中25的倍数的个数 25可以额外提供1个因子5
// n/125可以得到n!中125的倍数的个数 125可以额外提供一个因子5
// 250 / 5 = 50
// 250 / 25 = 10
// 250 / 125 = 2 125、250 125可以提供3个因子5,由于125是5和25的倍数,其中两个因子5在前面已经计算过,在这里纸提供一个因子5
int count = 0;
int divisor = 5;
while(divisor <= n){
count += n / divisor;
divisor *= 5;
}
return count;
}
}
复杂度分析
- 时间复杂度:
O(logN)
log
为以5为底的对数 - 空间复杂度:
O(1)