本文主要是介绍《leetCode》:Factorial Trailing Zeroes,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目
Given an integer n, return the number of trailing zeroes in n!.Note: Your solution should be in logarithmic time complexity.
思路一:不能AC
思路,统计2和5的个数 ,时间复杂度为O(n)
int min(int a,int b){return a<b?a:b;
}
int trailingZeroes(int n) {if(n<=0){return 0;} int twoCount=0;int fiveCount=0;for(int i=1;i<=n;i++){if(i&0x01==0){twoCount++;}if(i%5==0){fiveCount++;}}return min(fiveCount,twoCount);
}
思路二
按照上面的统计,报超时,继续分析可知,n!中能被2整除的个数一定大于整除5的个数,因此,只需要统计n!=(2^x)(3^y)(5^z)….中z的值即可。
int trailingZeroes(int n) {int zerosCount=0;//统计 n整数5/25/125/625等的个数 while(n>=5){zerosCount+=n/5;n=n/5; } return zerosCount;
}
这篇关于《leetCode》:Factorial Trailing Zeroes的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!