Question
Given an integer n, return the number of trailing zeroes in n!.
Note: Your solution should be in logarithmic time complexity.
Credits:
Special thanks to @ts for adding this problem and creating all test cases.
Analysis
This question I’ve seen it quite a few time, also. We’re basically count the number of factor 5s.
Eg.
n = 5, count = 1
n = 6, count = 1
n = 10, count = 2
n = 24, count = 4
n = 25, count = 6
n = 26, count = 6
Solution
Please read this post [LintCode] Trailing Zeros of Factorial.
Code
public class Solution {
public int trailingZeroes(int n) {
if (n < 5) {
return 0;
}
int res = 0;
long base = 5;
while (n >= base) {
res += n / base;
base *= 5;
}
return res;
}
}
another pretty good solution:
public class Solution {
public int trailingZeroes(int n) {
int count = 0;
for (int i = n / 5; i > 0; i = i / 5) {
count = count + i;
}
return count;
}
}