Factorial Trailing Zeroes

Problem

Given an integer n, return the number of trailing zeroes in n!.

Note: Your solution should be in logarithmic time complexity.

Solution

O(n) Solution

public class Solution {
    public int trailingZeroes(int n) {
        int res = 0;
        while (n >= 5) {
            res += n / 5;
            n /= 5;
        }
        return res;
    }
}

Analysis

The only way to have zeroes in our factorial result is 2 * 5 = 10
Therefore, we just need to calculate how many 5 and 2 in the factorial expression
However, as long as we have 5 there must be 2 because there must be an even number among five numbers
Hence, we just need to calculate how many 5 we have in multiplier

results matching ""

    No results matching ""