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++的项目列表你可以拿去练手实战开发,毕竟学编程动手实践是少不了的! 如果你不知 ...
随机推荐
- 关于redis分布式锁
Lock 分布式锁 1.安全属性:互斥,不管任何时候,只有一个客户端能持有同一个锁. 2.效率属性A:不会死锁,最终一定会得到锁,就算一个持有锁的客户端宕掉或者发生网络分区. 3.效率属性B:容错,只 ...
- input值
input里面的值为字符串(string)类型,所以用作数的计算的时候需要用Number(mInput.value)进行转换成数值Numbei()类型才可以计算 例如: mInput1.value + ...
- Sample Codes之Query features from a FeatureLayer
除了地图基本的放大缩小等功能,在webgis上的二次开发中,查询功能 通常作为需求的一部分需要我们去实现,今天就给大家详细的分析实例代码中的查询功能:Query features from a Fea ...
- 【Tool】---ubuntu18.04配置oh-my-zsh工具
作为Linux忠实用户,应该没有人不知道bash shell工具了吧,其实除了bash还有许多其他的工具,zsh就是一款很好得选择,基于zsh shell得基础之上,oh-my-zsh工具更是超级利器 ...
- 获取当前URL
HttpContext.Current.Request.Url.ToString();
- Python解析json字符串,json字符串用法
json数据简介 json数据是一个轻量级的数据交换格式,采用完全独立于语言的文本格式,这些特性使json称为理想的数据交换语言,易于人阅读和编写,同时易于机器解析和生成. json中的字符集必须是U ...
- 150行代码打造.net core生产力工具,你值得拥有
你是否在初学 .net core时,被依赖注入所折磨? 你是否在开发过程中,为了注入依赖而不停的在Startup中增加注入代码,而感到麻烦? 你是否考虑过或寻找过能轻松实现自动注入的组件? 如果有,那 ...
- HTML超全笔记
HTML概述 概念:是最基础的网页开发语言 Hyper Text Markup Language 超文本标记语言 超文本: 超文本是用超链接的方法,将各种不同空间的文字信息组织在一起的网状文本. 标记 ...
- JS实现 JSON扁平数据转换树状数据
后台我拿的数据是这样的格式: [ {id:1 , parentId: 0, name: '', level: 0}, {id:2 , parentId: 0, name: '', level: 0}, ...
- selenium,xpath路径中引入变量
比如,我需要获取每一条微博的阅读数,总不可能所有微博都找出xpath,然后获取阅读数 找规律 “//*[@id='Pl_Official_MyProfileFeed__20']/div/div[2]/ ...