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.
题目大意:返回阶乘之后的结果结尾有多少个0(零)
刚开始使用了最通俗的想法,先求阶乘,然后str格式化之后倒叙遍历计数0的个数,直到不为0为止。
写完之后循环太多,太复杂。time out。
网上看了一个很巧妙地方法,求n这个数中5的个数。末尾的0可以看作是2*5求出的。所以n中有多少个5,末尾就有多少个0.
这个方法,可以沿用到求多少个9,看成3的个数之类的。很好的思路!
上代码:
class Solution(object):
def trailingZeroes(self, n):
res = 0
while n > 0:
n = n//5
res += n
return res
引用文章https://blog.csdn.net/coder_orz/article/details/51590478,
可能是python2的原因,用了单斜杠,这里改为地板除双斜杠//。
疫情中的英国,
加油!
09/05/2020