LeetCode 172. Factorial Trailing Zeroes
问题描述
Given an integer n, return the number of trailing zeroes in n!.
Note: Your solution should be in logarithmic time complexity.
问题分析
虽然这道题是Easy难度,但是刚开始的时候没有想到有什么好的解法。后来想到0只能由2*5得到。所以说判断这道题除以5就可以了。
比如10/5 =2;由2*5和10产生了2个0,n=25。计算n/5,可以得到5个5,分别来自其中的5, 10, 15, 20, 25,但是在25中其实是包含2个5的,这一点需要注意。
所以说除了计算n/5, 还要计算n/5/5, n/5/5/5, n/5/5/5/5, …, n/5/5/5,,,/5直到商为0,然后就和,就是最后的结果。
Java代码
public int trailingZeroes(int n) {
int res = 0;
while (n>0){
res+=n/5;
n/=5;
}
return res;
}
LeetCode学习笔记持续更新
GitHub地址 https://github.com/yanqinghe/leetcode
CSDN博客地址 http://blog.csdn.net/yanqinghe123/article/category/7176678