【Leetcode】Factorial Trailing Zeroes

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

class Solution(object):

    def trailingZeroes(self, n):

        """

        :type n: int

        :rtype: int

        """

        return 0 if n==0 else n/5+self.trailingZeroes(n/5)


class Solution(object):

    def trailingZeroes(self, n):

        """

        :type n: int

        :rtype: int

        """

        r = 0

        while n>0:

            n /= 5

            r += n

        return r

1 我的方法时间超出限制了

2 因为末尾0都是由5*2得来的,故可以统计5和2的个数,但在质因数中,2的个数总是大于等于5的个数,所以我们只需要统计5的个数就行了,有多少个5,就返回多少个0

3 用递归的方法: 第一个n/5得到5的个数,self.trailingZeroes(n/5)可以得到

4 while的方法:比如n=28, n/5=5, 还可以while循环一次,这是因为28求阶乘中有个25,第一次n/5是把单个的5找出来了,再循环一次,可以把25中的另外一个5找出来。

5 假如是126,则126/5=25,因为126中有125=5*5*5,第一次除以5时,得到单个的5,再用25/5=5,得到125中的第二个5,再除以5得到最后一个5

你可能感兴趣的:(【Leetcode】Factorial Trailing Zeroes)