每周完成一个ARTS(Algorithm,Review,Tips,Sha):至少做一道leetcode算法题,阅读并点评至少一篇英文技术文章,学习至少一个技术技巧,分享一篇有观点和思考的技术文章.
Algorithm:
给定一个整数n,返回n!结果尾数中零的数量。示例1:输入:3输出:0解释:3!=6,尾数中没有零。示例2:输入:5输出:1解释:5!=,尾数中有1个零.说明:你算法的时间复杂度应为O(logn)。---------------------------------题目问阶乘的结果有几个零,如果用笨方法求出阶乘然后再算0的个数会超出时间限制。然后我们观察一下,5的阶乘结果是,零的个数为1:5!=5*4*3*2*1=末尾唯一的零来自于2*5。很显然,如果需要产生零,阶乘中的数需要包含2和5这两个因子。例如:4*10=40也会产生零,因为4*10=(2*2)*(2*5)。因此,我们只要数一数组成阶乘的数中共有多少对2和5的组合即可。又因为5的个数一定比2少,问题简化为计算5的个数就可以了。转自作者:jalan链接:
转载请注明:http://www.quwenlai.com/zejq/17685.html