[LeetCode] 172. 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 logarithmic time complexity.
给一个整数n,返回n的阶乘末尾0的个数。
找乘数中10的个数,而10可分解为2和5,而2的数量远大于5的数量,所以找出5的个数。
解法1:迭代Iterative
解法2: 递归Recursive
Java:
1 2 3 4 5 6 7 8 9 10 | public class Solution { public int trailingZeroes( int n) { int res = 0 ; while (n > 0 ) { res += n / 5 ; n /= 5 ; } return res; } } |
Java:
1 2 3 4 5 | public class Solution { public int trailingZeroes( int n) { return n == 0 ? 0 : n / 5 + trailingZeroes(n / 5 ); } } |
Python:
1 2 3 4 5 6 7 8 | class Solution: # @return an integer def trailingZeroes( self , n): result = 0 while n > 0 : result + = n / 5 n / = 5 return result |
Python:
1 2 3 4 5 6 7 | class Solution( object ): def trailingZeroes( self , n): """ :type n: int :rtype: int """ return 0 if n = = 0 else n / 5 + self .trailingZeroes(n / 5 ) |
C++:
1 2 3 4 5 6 7 8 9 10 11 | class Solution { public : int trailingZeroes( int n) { int res = 0; while (n) { res += n / 5; n /= 5; } return res; } }; |
C++:
1 2 3 4 5 6 | class Solution { public : int trailingZeroes( int n) { return n == 0 ? 0 : n / 5 + trailingZeroes(n / 5); } }; |
All LeetCode Questions List 题目汇总
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构