[Leetcode] Factorial Trailing Zeroes 末尾零
Factorial Trailing Zeroes
Given an integer n, return the number of trailing zeroes in
n!
.Note: Your solution should be in logarithmic time complexity.
迭代法
复杂度
时间 O(logN) 空间 O(k^2)
思路
技巧在于,每5个数会产生一个0。为什么呢?试想1*2*3*4*5*6*7*8*9*10*11
,前5个数中有一个2一个5,相乘有一个0,后5个数中有一个10,又有一个0。以此类推,每5个数会有一个0。
代码
public class Solution { public int trailingZeroes(int n) { int sum = 0; while(n > 0){// 阶乘中有多少5,结果就有多少个0sum += n / 5;n /= 5; } return sum; }}