172. Factorial Trailing Zeroes

Problem:

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

Example 1:

Input: 3
Output: 0
Explanation: 3! = 6, no trailing zero.

Example 2:

Input: 5
Output: 1
Explanation: 5! = 120, one trailing zero.

Note: Your solution should be in logarithmic time complexity.

思路

Solution (C++):

int trailingZeroes(int n) {
    if (n < 5)  return 0;
    return n/5 + trailingZeroes(n/5);
}

性能

Runtime: 4 ms  Memory Usage: 5.8 MB

思路

Solution (C++):

int trailingZeroes(int n) {
    int ans = 0;
    for (long long i = 5; i <= n; i *= 5) {
        ans += n / i;
    }
    return ans;
}

性能

Runtime: 4 ms  Memory Usage: 6 MB
思路

Solution (C++):

int trailingZeroes(int n) {
    int ans = 0;
    while (n/5) {
        ans += n/5;
        n /= 5;
    }
    return ans;
}

性能

Runtime: 0 ms  Memory Usage: 5.9 MB

相关链接如下:

知乎:littledy

欢迎关注个人微信公众号:小邓杂谈,扫描下方二维码即可

作者:littledy
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。
原文地址:https://www.cnblogs.com/dysjtu1995/p/12642263.html