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;
    }
相关推荐
Your易元11 分钟前
设计模式-模板方法模式
java·设计模式·模板方法模式
risc1234561 小时前
Elasticsearch 线程池
java·大数据·elasticsearch
飒飒真编程1 小时前
C++类模板继承部分知识及测试代码
开发语言·c++·算法
GeminiGlory1 小时前
算法练习6-大数乘法(高精度乘法)
算法
NE_STOP1 小时前
SpringBoot--如何整体读取多个配置属性及其相关操作
java·spring
熬了夜的程序员1 小时前
【华为机试】HJ61 放苹果
算法·华为·面试·golang
马特说2 小时前
基于随机森林的金融时间序列预测系统:从数据处理到实时预测的完整流水线
算法·随机森林·金融
呆呆的小鳄鱼2 小时前
leetcode:HJ18 识别有效的IP地址和掩码并进行分类统计[华为机考][字符串]
算法·leetcode·华为
apihz2 小时前
通用图片搜索-搜狗源免费API接口使用指南
android·java·python·php·音视频
风象南2 小时前
基于 SpringBoot 的 REST API 与 RPC 调用的统一封装
java·spring boot·后端