ARTS|Week 3 本周的主题可能是乱
ARTS是极客时间推出的一个打卡活动,通过100天的关于Algorithm、Review、Tip和Share的刻意训练,来实现进阶。
1. Algorithm
每周至少做一个LeetCode算法题,为了编程训练和学习。
实际时间:80分钟
算法题目
算法题链接:https://leetcode.com/problems/roman-to-integer/
给定一个罗马数字,将其转换成整数,输入确保在1 至 3999的范围内。
题目分析
该题目有很多种方法,我这里只实现了理解起来较为简单的两种方法。
前后数字对比法,就是遍历所有的罗马数字,然后根据其对应的数值做加法。其中,需要把当前的数字与前一个数字进行比较,如果小于前一个数字,则正常的做加法;如果大于前一个数字,那么说明当前数字与前一个数字是一个特例组合,需要减去两倍的前一个数字。
正则表达式法,该方法是将所有的罗马数字的组合罗列出来,通过正则表达式来找到不同的组合,并求和。在正则表达式的模式识别上,需要注意罗马数字组合的顺序,比如
IV
一定要在I前面,否则正则表达式的判断都是优先提取出I
来。
代码
Python代码实现如下:
前后两数对比法:
正则表达式法:
重点在于正则表达式匹配模式的顺序:r’IV|IX|I|V|XL|XC|X|L|CD|CM|C|D|M’
从提交的记录来看,算法效率比较低:
完整的分享记录在了:LeetCode | 3. Roman to Integer 罗马数字转整数
2. Review
阅读并点评至少一篇技术文章,通过英文技术文章来学习英文。
实际时间:30分钟
42岁转软件开发工程师,有戏吗?
文章链接:https://www.quora.com/Is-it-possible-to-be-a-software-engineer-at-age-42
我的点评
这是 Quora 上的一个问答,这里列其中两个有代表性的故事:
答者对计算机一直比较感兴趣,也经常装电脑、修电脑等等。在32岁时帮着做一些足球比赛的统计工作,被发现有作为开发者的潜质,于是开始被带着学习和自学大量的相关内容。到40岁时,开始找工作,一开始猎头们都不看好,最后也还是如愿,并很快就从初级做到了高级。由于年纪较大且自学,答者告诫必须要保持激情和学习方向的正确性。
另一个答者是40岁去学了个 CS 的本科,3年后开始找工作,先是大数据相关的实习,6个月后转正为 Junior。答者本身之前有一些IT相关的工作,再加上自己又专门花了时间去学习 CS,所以相比同年级的人要表现好一些。
相比他们,我现在开始转型学习 Program,至少在年龄上是很大的优势啦,加油。
3. Tip
学习至少一个技术技巧,为了总结和归纳日常工作中遇到的知识点。
实际时间:20分钟
Proxy
以前在科学上网时,太依赖于第三方工具,比如 Shadowsocks、ClashX等,因此基本上只使用了 SOCKS 的方式来绕过防火墙。由于一些限制,不能在工作电脑中使用第三方工具和 VPN 了,便尝试着使用系统自带的 Proxy 来配置科学上网。
在 Windows 10 上,直接通过 Settings - Network & Internet - Proxy进行配置 http 的代理设置。当然,也可以直接在 IE 的 Internet Options中进行配置。
在 macOS 上,则是在 System Preferences - Network - Wi-Fi - Advanced - Proxies 中,选择 Web Proxy (HTTP) 进行配置。如果需要在家庭和工作这两个不同的网络间切换的话,可以用到 Network 提供的 Location 功能来对这两个不同地方的网络的 Proxy 进行配置。
在 Chrome 浏览器中,仍然可以通过 Proxy SwitchyOmega 来使用配置代理,此时只需将 Proxy 的类型做一修改,比如从原来的 SOCKS 变为 HTTP。
4. Share
分享一篇有观点和思考的技术文章,为了建立影响力、输出价值观。
实际时间:100分钟
策略模式
这周没有太多的输出,只是学习并分享了设计模式中的策略模式,详细可以参考 大话设计模式 | 2. 策略模式
本周相比之前,原本规律的作息被稍微打破了,学习的时间也就没能保证上。
版权声明: 本文为 InfoQ 作者【Puran】的原创文章。
原文链接:【http://xie.infoq.cn/article/125d0dc83189fbe06a8b18426】。文章转载请联系作者。
评论