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.

题目是非常简单的,计算一个数字递归相乘后末尾0的个数

在相乘出现2*5才有可能出现0,2一般是足够的,主要是5的个数,因为是阶乘,比如所以只要数字大于15,那么必定经过15,10,5那么肯定包含3个以上的5,比如25,那么肯定包含25,20,15,10,5,因为25中包含5*5所以还要计算25/5中的5的个数

下面是自己最开始写的方法,虽然运行没有错,但是时间复杂度太大,不好:

int trailingZeroes(int n) {
	if(0 == n)
	{
		return 0;
	}
	int count;
	int src;
	int returnVal = 0;
	while(n)
	{
		src = n;
		count = 0;
		while(!(src%5))
		{
			src = src/5;
			count++;
		}
		returnVal += count;
		n--;
	}
	return returnVal;
}

下面是一些简单的哦算法:

int trailingZeroes(int n) {
	int res = 0;
	while(n)
	{
		res += n/5;
		n /= 5;
	}
	return res;
} 
int trailingZeroes(int n) {
    return n < 5 ? 0 : n / 5 + trailingZeroes(n /5);
}

时间: 2024-10-08 20:41:13

LeetCode—Factorial Trailing Zeroes的相关文章

关于[LeetCode]Factorial Trailing Zeroes O(logn)解法的理解

题目描述: Given an integer n, return the number of trailing zeroes in n!. 题目大意: 给定一个整数n,返回n!(n的阶乘)结果中后缀0的个数(如5!=120,则后缀中0的个数为1). 解题思路: 1 int trailingZeroes(int n) { 2 return (n/5>0)?trailingZeroes(n/5)+n/5:0; 3 } 首先这是LeetCode中时间复杂度为O(logn)的解法. 未完待续.

[LeetCode] Factorial Trailing Zeroes 阶乘末尾0

Given an integer n, return the number of trailing zeroes in n!. Note: Your solution should be in logarithmic time complexity. Credits:Special thanks to @ts for adding this problem and creating all test cases. Hide Tags Math 这题应该是2014年年底修改该过测试样本,之前的通过

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. 解析: 只有2和5相乘才会出现0,其中整十也可以看做是2和5相乘的结果,所以,可以在n之前看看有多少个2以及多少个5就行了,又发现2的数量一定多于5的个数,于是我们只看n前面有多少个5就行了,于是n/5就得到了5的个数,还有一点要注意的就是25这种

[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. Credits:Special thanks to @ts for adding this problem and creating all test cases. 这道题并没有什么难度,是让求一个数的阶乘末尾0的个数,也就是要找乘数中10的个数,

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. 解答: class Solution { public: int trailingZeroes(int n) { int i = 0; while (n >= 5) { i += n / 5; n /= 5; } return i; } }

Python3解leetcode Factorial Trailing Zeroes

问题描述: Given an integer n, return the number of trailing zeroes in n!. Example 1: Input: 3 Output: 0 Explanation: 3! = 6, no trailing zero. Example 2: Input: 5 Output: 1 Explanation: 5! = 120, one trailing zero. Note: Your solution should be in logari

LeetCode Factorial Trailing Zeroes (阶乘后缀零)

题意:如标题 思路:其他文章已经写过,参考其他. 1 class Solution { 2 public: 3 int trailingZeroes(int n) { 4 return n/5<5? n/5: n/5+trailingZeroes(n/5); 5 } 6 }; AC代码

[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. 分析 朴素解法: 首先求出n!,然后计算末尾0的个数.(重复÷10,直到余数非0) 该解法在输入的数字稍大时就会导致阶乘得数溢出,不足取. O(logn)解法: 考虑n!的质数因子. 后缀0总是由质因子2和质因子5相乘得来的.如果我们可以计数

LeetCode 172. 阶乘后的零(Factorial Trailing Zeroes)

172. 阶乘后的零 LeetCode172. Factorial Trailing Zeroes 题目描述 给定一个整数 n,返回 n! 结果尾数中零的数量. 示例 1: 输入: 3 输出: 0 解释: 3! = 6, 尾数中没有零. 示例 2: 输入: 5 输出: 1 解释: 5! = 120, 尾数中有 1 个零. 说明: 你算法的时间复杂度应为 O(log n) . Java 实现 class Solution { // 递归思路 public static int trailingZe