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;
    }
相关推荐
LucDelton9 分钟前
Java 读取无限量文件读取的思路
java·运维·网络
夹锌饼干19 分钟前
mysql死锁排查流程--(处理mysql阻塞问题)
java·mysql
小信丶28 分钟前
@EnableTransactionManagement注解介绍、应用场景和示例代码
java·spring boot·后端
m0_7369191030 分钟前
C++中的享元模式变体
开发语言·c++·算法
To Be Clean Coder36 分钟前
【Spring源码】createBean如何寻找构造器(四)——类型转换与匹配权重
java·后端·spring
罗湖老棍子37 分钟前
【 例 1】石子合并(信息学奥赛一本通- P1569)
数据结构·算法·区间dp·区间动态规划·分割合并
-孤存-1 小时前
SpringBoot核心注解与配置详解
java·spring boot·后端
wangluoqi1 小时前
26.2.4练习总结
算法
流㶡1 小时前
逻辑回归实战:从原理到不平衡数据优化(含欠拟合/过拟合诊断与召回率提升)
算法·机器学习·逻辑回归
Hx_Ma161 小时前
BCrypt
java