172. 阶乘后的零

https://leetcode.cn/problems/factorial-trailing-zeroes/description/?envType=study-plan-v2&envId=top-interview-150

只有2 * 5才会产生0,所以我们只要统计2和5的对数就行,因为2的数量一定大于5的数量,所以决定0个数的是5的数量。

java 复制代码
    public int trailingZeroes(int n) {
        int fiveNum = 0;
        for(int i = 5; i <= n; i += 5) {
            int num = i;
            while (num % 5 == 0) {
                num /= 5;
                fiveNum++;
            }
        }
        return fiveNum;
    }

O(n)的实现,我们知道只要考虑能拆出的5的数量就可,而n/5得到的就是当前n中第一次能拆出的5的数量;n/25得到的就是当前n中第二次能拆出的5的数量,以此类推直到拆不出5为止。

java 复制代码
    public int trailingZeroes2(int n) {
        int fiveNum = 0;
        while (n >= 5) {
            n /= 5;
            fiveNum += n;
        }
        return fiveNum;
    }
相关推荐
lay_liu3 小时前
springboot 文件下载
java·spring boot·后端
Flittly3 小时前
【SpringAIAlibaba新手村系列】(11)Embedding 向量化与向量数据库
java·笔记·spring·ai·springboot
Darkwanderor3 小时前
什么数据量适合用什么算法
c++·算法
workflower4 小时前
AI制造-推荐初始步骤
java·开发语言·人工智能·软件工程·制造·需求分析·软件需求
zc.ovo4 小时前
河北师范大学2026校赛题解(A,E,I)
c++·算法
py有趣4 小时前
力扣热门100题之环形链表
算法·leetcode·链表
py有趣4 小时前
力扣热门100题之回文链表
算法·leetcode·链表
ACGkaka_5 小时前
SimpleDateFormat 线程安全问题及修复方案
java·jvm·安全