【Leetcode】数论刷题解析(持续更新)

Abina ·
更新时间:2024-11-13
· 548 次阅读

本人使用环境Python3+Pycharm。最近恢复刷题,持续更新,能点赞的点点赞,抱拳了
【172】给定一个整数 n,返回 n! 结果尾数中零的数量。时间复杂度不超过logn
题目分析:硬核解法就是直接把n!算出来,然后数0。确实能够实现,但是时间复杂度是O(n)。接下来我们就要转变思想,怎么搞这个东西,首先既然是数0,那么什么会产生0?一定是2x5,4x5,6x5,8x5,或者是10,20这些,他们都有一个共同的特点就是他们都可以拆成5和……,2和……。
到这里我们会发现2的个数永远比5多10个数 我们就可以发现5只有2个,2可以有5个,这个地方一定要理解。这道题已经让我们从n!的结果数0,变成了数阶乘中2和5的最小个数,再变成数5的个数。说到这里这个问题就很明了了。
O(n)=log5(n)

class Solution127: def trailingZeroes(self, n: int) -> int: #sum 是为了计算5的个数 sum = 0 while n >= 5: #//是整数除法,比如25里面有5个5,10里面有2个5 n = n // 5 sum += n return sum
作者:Scala没有静态



数论 leetcode 更新

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章