给定一个整数 n,返回 n! 结果尾数中零的数量。
示例 1:
输入: 3 输出: 0 解释: 3! = 6, 尾数中没有零。
示例 2:
输入: 5 输出: 1 解释: 5! = 120, 尾数中有 1 个零.
说明: 你算法的时间复杂度应为 O(log n) 。
class Solution {
public int trailingZeroes(int n) {
int count=0;
int f=factorial(n);
while(f%10==0) {
count++;
f/=10;
}
System.out.println(count);
return count;
}
public int factorial(int n){
if(n<=1)return 1;
return n*factorial(n-1);
}
}
上述代码小数据不会出错大数据会溢出。
找到一种简便的方法,可算是一条规律吧。只要出现5,就会出现2,每出现一个5就多一个0,最后判断这个数在阶乘中出现多少次5就行了。来自力扣@
class Solution {
public int trailingZeroes(int n) {
int count=0;
while(n!=0){
n/=5;
count+=n;
}
return count;
}
}
本文介绍了一种高效算法,用于计算给定整数n的阶乘结果中尾数零的数量。通过分析5和2的配对规律,避免了直接计算阶乘的溢出问题,实现了O(log n)的时间复杂度。

432

被折叠的 条评论
为什么被折叠?



