JonnyF--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,求N!的末尾有多少0。要求算法复杂度为lg。由于有复杂度的限制,所以就不能采用一般的暴力算法了,因此换个思路来看,要知道什么数相乘直接才会产生0呢?那就是2和5相乘会产生0,那么我们就需要计算这个阶乘中会有几次2*5呢?实际上,只要是偶数那么就会包含2,所以2的出现次数肯定是高于5的,因此只需要计算出较少的那个就好了,那就是计算5出现的次数。注意:25中也是包含5的,因此要对5的倍数进行计算。

复制代码
class Solution:
    # @return an integer
    def trailingZeroes(self, n):
        res = 0
        while(n):
            res += n/5
            n /= 5
        return res
复制代码
posted @   F-happy  阅读(103)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示