给定一个整数 n,返回 n! 结果尾数中零的数量。
示例 1:
输入: 3
输出: 0
解释: 3! = 6, 尾数中没有零。
示例 2:
输入: 5
输出: 1
解释: 5! = 120, 尾数中有 1 个零.
说明: 你算法的时间复杂度应为 O(log n) 。
题解:
这道题求解的是尾数中零的个数,根据乘法规则我们知道,2的倍数与5的倍数相乘得到尾数为零的数字。这里还要考虑本身就含有0的数字,比如:10,20,100……。综合一下,我们只需要找到从1到要求阶乘数字之间含有多少个5的倍数,比如,1~24含有4个5的倍数,分别是5,10,15,20,所以,24的阶乘的尾数含有4个零。
时间和内存消耗为:
代码为:
class Solution {
public int trailingZeroes(int n) {
int ans=0;
while(n!=0){
n=n/5;
ans+=n;
}
return ans;
}
}