[LeetCode] 172. Factorial Trailing Zeroes 求阶乘末尾零的个数

Posted 轻风舞动

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[LeetCode] 172. Factorial Trailing Zeroes 求阶乘末尾零的个数相关的知识,希望对你有一定的参考价值。

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.

给一个整数n,返回n的阶乘末尾0的个数。

找乘数中10的个数,而10可分解为2和5,而2的数量远大于5的数量,所以找出5的个数。

解法1:迭代Iterative

解法2: 递归Recursive

Java:

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

Java:

public class Solution {
    public int trailingZeroes(int n) {
        return n == 0 ? 0 : n / 5 + trailingZeroes(n / 5);
    }
}

Python:

class Solution:
    # @return an integer
    def trailingZeroes(self, n):
        result = 0
        while n > 0:
            result += n / 5
            n /= 5
        return result  

Python:

class Solution(object):
    def trailingZeroes(self, n):
        """
        :type n: int
        :rtype: int
        """
        return 0 if n == 0 else n / 5 + self.trailingZeroes(n / 5)     

C++:

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

C++:

class Solution {
public:
    int trailingZeroes(int n) {
        return n == 0 ? 0 : n / 5 + trailingZeroes(n / 5);
    }
};

  

 

  

 

 

 

以上是关于[LeetCode] 172. Factorial Trailing Zeroes 求阶乘末尾零的个数的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode 172 Factorial Trailing Zeroes

Java [Leetcode 172]Factorial Trailing Zeroes

leetcode 172. Factorial Trailing Zeroes

leetcode-172-Factorial Trailing Zeroes

LeetCode 172. 阶乘后的零(Factorial Trailing Zeroes)

LeetCode 172 Factorial Trailing Zeroes(阶乘后的零)(*)