LeetCode 172:阶乘后的零
给定一个整数 n, 返回 n! 结果中尾数为零的数量。
示例 :
输入:
输出:
解释: ! = , 尾数中没有零。
示例 :
输入:
输出:
解释: ! = , 尾数中有个零。
说明:算法的时间复杂度应为 O(log n)。
理解:最简单粗暴的方法就是先乘完再说,然后再数尾数有几个零?
发现规律:在使用暴力破解法的过程中会发现,什么时候会出现零呢?这9个数字中只有2和5相乘才会有0的出现,或者他们的倍数。因此,问题变转变成求这个阶乘数中能匹配多少对2和5的问题。
例如:
! = 【*(*)**(*)*(**)*(*)】
进一步发现:因子分解之后2的个数肯定是大于5的个数的,所以能匹配多少对取决于5的个数。那么,问题又转变成求这个阶乘数中有多少个5的因子的问题。
注意:25 = 5*5, 125 = 5*5*5 ,..., 需要额外考虑。
以下高能!!!
# 解法一
class Solution:
def trailingZeroes(self, n: int) -> int:
res = 0
k = 1
while n >= 5 ** k:
res += n // (5 ** k)
k += 1
return res
# 解法二
class Solution:
def trailingZeroes(self, n: int) -> int:
if n < 5:
return 0
return n // 5 + self.trailingZeroes(n // 5)
END 2019-05-06 21:19:02
LeetCode 172:阶乘后的零的更多相关文章
- LeetCode 172. 阶乘后的零(Factorial Trailing Zeroes)
172. 阶乘后的零 172. Factorial Trailing Zeroes 题目描述 给定一个整数 n,返回 n! 结果尾数中零的数量. LeetCode172. Factorial Trai ...
- Java实现 LeetCode 172 阶乘后的零
172. 阶乘后的零 给定一个整数 n,返回 n! 结果尾数中零的数量. 示例 1: 输入: 3 输出: 0 解释: 3! = 6, 尾数中没有零. 示例 2: 输入: 5 输出: 1 解释: 5! ...
- Leetcode 172.阶乘后的零
阶乘后的零 给定一个整数 n,返回 n! 结果尾数中零的数量. 示例 1: 输入: 3 输出: 0 解释: 3! = 6, 尾数中没有零. 示例 2: 输入: 5 输出: 1 解释: 5! = 120 ...
- 【每天一题】LeetCode 172. 阶乘后的零
开源地址:点击该链接 题目描述 https://leetcode-cn.com/problems/factorial-trailing-zeroes 给定一个整数 n,返回 n! 结果尾数中零的数量. ...
- 172. 阶乘后的零 Java解法
https://leetcode-cn.com/problems/factorial-trailing-zeroes/ 172. 阶乘后的零 这题要完成其实要知道一个很巧妙的思想,就是阶乘里面,后面的 ...
- leetcode刷题笔记172 阶乘后的零
题目描述: 给定一个整数 n,返回 n! 结果尾数中零的数量. 示例1: 输入: 输出: 解释: ! = , 尾数中没有零. 示例2: 输入: 输出: 解释: ! = , 尾数中有 个零. 说明: 你 ...
- 每日一道 LeetCode (41):阶乘后的零
每天 3 分钟,走上算法的逆袭之路. 前文合集 每日一道 LeetCode 前文合集 代码仓库 GitHub: https://github.com/meteor1993/LeetCode Gitee ...
- 172 Factorial Trailing Zeroes 阶乘后的零
给定一个整数 n,返回 n! 结果尾数中零的数量.注意: 你的解决方案应为对数时间复杂度. 详见:https://leetcode.com/problems/factorial-trailing-ze ...
- 【leetcode 简单】第四十二题 阶乘后的零
给定一个整数 n,返回 n! 结果尾数中零的数量. 示例 1: 输入: 3 输出: 0 解释: 3! = 6, 尾数中没有零. 示例 2: 输入: 5 输出: 1 解释: 5! = 120, 尾数中有 ...
随机推荐
- SQLServer通过链接服务器调用Oracle 存储过程
语法: declare @输出参数 数据类型; exec(' exec 存储过程(?, ?)', 输入参数, @输出参数 out) at 链接服务器名 参考文章: SQL2008 链接Oracle 调 ...
- 实时更新DataGridView 合计值
public partial class Form1 : Form { public Form1() { InitializeComponent(); dataGridView1.DataSource ...
- html分割线
分割线效果图 完整html代码如下 <!DOCTYPE html> <html> <head> <meta charset= "utf-8" ...
- hive简单学习---1
---------------------------------------------------------------------------------------------------- ...
- DevOps - DevOps工具链
不要满足于使用世界上已存在的各种方法和技术,而应重点放在希望达到的效果上! 单单使用工具不难,困难的是在团队开发中熟练使用,并形成一套理想的工作流程,只有在团队中工具和思想才能发挥最大价值. 开源工具 ...
- DS18b20温度传感器基础使用
认识管脚 认识唯一标示的64位地址序列号 寄存器数据译码成温度值(下面只针对12位转化的,还有9..10等其他位的转化方式,不同位的转化,其精度也不同) 传感器存储器 配置寄存器使用说明 DS18b2 ...
- springboot-springmvc
0依赖 <!-- jsp --> <dependency> <groupId>org.apache.tomcat.embed</groupId> < ...
- 【AMAD】django-activity-stream
动机 简介 个人评分 动机 为你的django站点生成活动流(类似facebook feed).用户可以在个人feed页面看到订阅的人的活动流. 简介 django-activity-stream1中 ...
- jupyterlab部署到docker
操作环境:mac OS 10.14.6 docker版本:10.03.1 终端:iterm2 3.3 时间:2019年8月 ::说明::jupyter没有提供单独的jupyterlab镜像,可以使用j ...
- Metasploit入门教程
0.Metasploit简介 Metasploit是一款开源的渗透测试框架平台,到目前为止,msf已经内置了数千个已披露的漏洞相关的模块和渗透测试工具,模块使用ruby语言编写,这使得使用者能够根据需 ...