LeetCode--172--阶乘后的0

时间:2023-11-09 20:50:26

问题描述:

给定一个整数 n,返回 n! 结果尾数中零的数量。

示例 1:

输入: 3
输出: 0
解释: 3! = 6, 尾数中没有零。

示例 2:

输入: 5
输出: 1
解释: 5! = 120, 尾数中有 1 个零.

说明: 你算法的时间复杂度应为 O(log n) 

times out:时间复杂度O(nlogn),显然不行

 class Solution(object):
def trailingZeroes(self, n):
"""
:type n: int
:rtype: int
"""
if n == 1 or n == 0:
return 0
nums =[1,1]
i = 2
while i <= n:
nums.append(i*nums[i-1])
strs = str(nums[i])
return strs.count(0)

改进:

题目是求尾数中0的个数,100return 2,100 == 10* 10十的因子有两个。5!= 5 * 4 * 3 * 2 * 1 = 120 有一个因子10 return 1.有5必有2,求5的个数

class Solution(object):
def trailingZeroes(self, n):
"""
:type n: int
:rtype: int
"""
k = 0
res = 0
i = 0
while n:
k = n // 5
res += k
n = k
return res

可以去掉变量k

 class Solution(object):
def trailingZeroes(self, n):
"""
:type n: int
:rtype: int
"""
res = 0
while n > 0:
n = n/5
res += n
return res

2018-09-15 10:47:12