ARTS Week 15
Feb 3, 2020 ~ Feb 9, 2020
Algorithm
Problem 172.Factorial Trailing Zeroes(阶乘末尾的0) 题目链接
题目描述:给定一个整数n,求 n! 的末尾0的个数
思路为:因为 2 × 5 = 10,因此只要求得 n! 中因数 2 和 5 个数中的较小值,显然,因数为 5 的个数比因数为 2 的个数少。因为$ n! = 12...(n-1)n $,那么也就是求 1,2,...,n-1,n 这一列数中因数5的个数。我们发现只有 5, 10, 15, ... 的因数中才含有 5。因此我们容易想到通过计算 n//5 来求得因数等于5的个数,但这并没有全部算进去,因为像 25,50,125,625 这些数字不只含有一个因数5。因此,正确的求解公式如下:
\]
通过的代码如下:
class Solution:
def trailingZeroes(self, n: int) -> int:
res = 0
tmp = 5
while n >= tmp:
res += (n // tmp)
tmp *= 5
return res
Review
本周继续 Review 每个程序员需要知道的97件事(英文名:97 Things Every Programmer Should Know)。原文链接。下面是本周的5个小内容:
- 进程间通信影响应用程序响应时间(Inter-Process Communication Affects Application Response Time) 原文链接
响应时间是一个软件可用性的重要衡量标准,响应时间太久很容易带来用户的反感。而占据响应时间最多的便是进程间通信(IPC),IPC太慢或者IPC个数太多都会影响响应时间。优化方法有如下三种:1)优化进程间通信的速度,2)减少不必要进程间通信个数,3)缓存以前的进程间通信结果 - 保持构建清洁(Keep the Build Clean) 原文链接
随着项目的增长,警告会越来越多,它们之间的关系也越来越复杂,想找到自己的所需要的警告也很难。因此在出现警告后应该尽快处理警告,避免警告越积累越多,警告也是代码卫生的重要的组成部分。 - 知道如何使用命令行工具(Know How to Use Command-line Tools) 原文链接
现如今,有许多集成开发环境(IDE)可供使用,IDE有许多优点,但同样也有缺点,其屏蔽了底层细节导致你无法准确知道发生了什么。而使用命令行构建工具,你可以知道构建可执行文件的所有步骤(编译,链接)。此外,命令行工具中有些一个图形化界面更加强大,比如 grep 和 sed。当然,这并不是建议你放弃 IDE 而完全去使用命令行。 - 学会至少两种编程语言(Know Well More than Two Programming Languages) 原文链接
虽然现在有些语言相当流行,比如 Java,C/C++,Python。但是仅仅学习其中一种是远远不够的,你应该多学习一种语言,不同语言有着不同的差异,学习新的语言并明白它与已经学会的语言之间的区别,在对比二者的同时,互相取长补短,能获得更深刻的理解。 - 了解你的IDE(Know Your IDE) 原文链接
现代IDE使用起来十分方便,但是如果你并不熟练它,使用它的效率并不高。学习 IDE 的第一步便是了解其键盘快捷键。但是某些 IDE 寿命并不长,他们使用的快捷键也可能在将来无法使用,因此去学习那些命令行工具吧,比如 grep(1974年出现) sed(1974年出现) awk(1977年出现) 等。它们存在了几十年,并仍将存在。
Tips
在 Python2 中,检查一个值是否为一个字典中的键中可以使用dict.has_key() 方法,而在 Python3 中,字典中没有该方法。无论 Python2 还是 Python3 都可以使用 in 关键字来进行检查某个键值是否存在。示例代码如下:
Python 2.7.14 (default, Oct 12 2017, 15:50:02) [GCC] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> a = {1:'a', 2:'b'}
>>> a
{1: 'a', 2: 'b'}
>>> a.has_key(1)
True
>>> 1 in a
True
Python 3.6.10 (default, Jan 16 2020, 09:12:04) [GCC] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> a = {1:'a', 2:'b'}
>>> a
{1: 'a', 2: 'b'}
>>> a.has_key(1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'dict' object has no attribute 'has_key'
>>> 1 in a
True
Sharing
命令行工具是非常有用且强大的,它们通过提供许多的选项来使其具有强大的功能,有兴趣可以去看看 grep apt rpm 等命令的手册,它们都具有很多的选项。不过,正是由于其选项复杂,当不熟悉时,命令行使用起来没有 GUI 工具方便。GUI 工具也可以实现复杂的功能,但是很多使用 GUI 工具的人对其复杂的功能并不熟悉,就拿我个人而言,虽然在使用 IDEA,Visual Studio。但是,自己对这些工具并不熟悉,有一些功能总是在上网查询后才知道如何使用,并且一段时间不使用的话就很容易忘记了。
ARTS Week 15的更多相关文章
- 【ARTS】01_18_左耳听风-20190311~20190317
ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...
- 一切从这里起始(左耳听风 ARTS 6号小组 week 1)
ARTS 具体要求: 1.每周至少做一个 leetcode 的算法题2.阅读并点评至少一篇英文技术文章3.学习至少一个技术技巧4.分享一篇有观点和思考的技术文章 1.Algorithm Two Sum ...
- 【ARTS】01_42_左耳听风-201900826~201900901
ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...
- 【ARTS】01_43_左耳听风-201900902~201900908
ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...
- 【ARTS】01_41_左耳听风-201900819~201900825
ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...
- 【ARTS】01_40_左耳听风-201900812~201900818
ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...
- .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验
不知不觉,“.NET平台开源项目速览“系列文章已经15篇了,每一篇都非常受欢迎,可能技术水平不高,但足够入门了.虽然工作很忙,但还是会抽空把自己知道的,已经平时遇到的好的开源项目分享出来.今天就给大家 ...
- 15个关于Chrome的开发必备小技巧[译]
谷歌Chrome,是当前最流行且被众多web开发人员使用的浏览器.最快六周就更新发布一次以及伴随着它不断强大的开发组件,使得Chrome成为你必备的开发工具.例如,在线编辑CSS,console以及d ...
- 15个C++项目列表
实验楼上有很多C++的实战项目,从简单到进阶,学习每个项目都可以掌握相应的知识点. 如果你还是C++新手的话,那么这个C++的项目列表你可以拿去练手实战开发,毕竟学编程动手实践是少不了的! 如果你不知 ...
随机推荐
- 13.利用pymysql创建变量类型的表名解说
在练习爬虫爬取数据时,想将爬取的数据用pymysql存储到数据库中,并且存储时的表名是一个变量,但在写完代码运行后经常出面1064的错误代码,在网上查找相关解决方法,但一直找不到完美的解决方法, 通过 ...
- ocx控件的坑
前言 这还是第一次写博客,以前太懒了,现在发现是很有必要记录下这些经验和问题的.最近项目中有个需求(报表单据需要客户签名,连接签字板,把签名单据同步到服务器上),需要和硬件交互,当时硬件商提供了ocx ...
- ThreadLocal解析:父线程的本地变量不能传递到子线程详解
众所周知,ThreadLocal类是java提供线程本地变量的工具类.但父线程的本地变量却不能被子线程使用,代码如下: public static void main(String[] args) { ...
- 【转】Java实现折半查找(二分查找)的递归和非递归算法
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://wintys.blog.51cto.com/425414/94051 Java二分 ...
- hdfs/hbase 程序利用Kerberos认证超过ticket_lifetime期限后异常
问题描述 业务需要一个长期运行的程序,将上传的文件存放至HDFS,程序启动后,刚开始一切正常,执行一段时间(一般是一天,有的现场是三天),就会出现认证错误,用的JDK是1.8,hadoop-clien ...
- 区间dp - 全部按下一列石头
There is one last gate between the hero and the dragon. But opening the gate isn't an easy task. The ...
- python小功能记录
本博客会不断完善,记录python小功能. 1. 合并两个字典 # in Python 3.5+ >>> x = {'a': 1, 'b': 2} >>> y = ...
- 洛谷 P5424 [USACO19OPEN]Snakes
题目链接 题目描述 传说,数千年前圣帕特里克消灭了哞尔兰所有的蛇.然而,蛇们现在卷土重来了!圣帕特里克节是在每年的3月17日,所以Bessie要用彻底清除哞尔兰所有的蛇来纪念圣帕特里克. Bessie ...
- .NetCore自定义WebAPI返回Json的格式大小写的三种方式
.NetCore的Controller/WebAPI可以帮我们将返回结果自动转换为Json格式给前台,而且可以自由设定格式(大写.小写.首字母大写等),我总结了三种方法,对应三种灵活度,供大家参考 ( ...
- python数据类型之字典操作
Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串.数字.元组等其他容器模型.一.创建字典字典由key和value成对组成.基本语法如下: infos = {"name&q ...