题目描述:
给定一个整数 n,返回 n! 结果尾数中零的数量。
示例 1:
输入: 3
输出: 0
解释: 3! = 6, 尾数中没有零。
示例 2:
输入: 5
输出: 1
解释: 5! = 120, 尾数中有 1 个零.
说明: 你算法的时间复杂度应为 O(log n) 。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/factorial-trailing-zeroes
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
Java代码一:
class Solution {
public int trailingZeroes(int n) {
int count2 = 0, count5 = 0;
for(int i = 2; i <= n; i++) {
int cur = i;
while(cur%2==0) {
count2++;
cur = cur / 2;
}
while(cur%5==0) {
count5++;
cur = cur / 5;
}
}
if(count2 > count5) return count5;
return count2;
}
}
Java代码二:
class Solution {
public int trailingZeroes(int n) {
int count = 0;
for(int i = 5; i <= n; i = i + 5) {
int cur = i;
while(cur % 5 == 0) {
count++;
cur = cur / 5;
}
}
return count;
}
}
Java代码三:
class Solution {
public int trailingZeroes(int n) {
if(n == 0) return 0;
n = n / 5;
return n + trailingZeroes(n);
}
}