码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-10-02 13:53:46      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:res   python   bsp   ret   大于   inpu   out   else   amp   

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 求阶乘末尾零的个数

标签:res   python   bsp   ret   大于   inpu   out   else   amp   

原文地址:https://www.cnblogs.com/lightwindy/p/9736240.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!