每周完成一个 ARTS:
Algorithm: 每周至少做一个 LeetCode 的算法题
Review: 阅读并点评至少一篇英文技术文章
Tips: 学习至少一个技术技巧
Share: 分享一篇有观点和思考的技术文章
344. Reverse String
难度:Easy
题意:编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[]
的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。
示例一:
Input: ["h","e","l","l","o"]
Output: ["o","l","l","e","h"]
示例二:
Input: ["H","a","n","n","a","h"]
Output: ["h","a","n","n","a","H"]
解法:
本题的解法相对非常简单,因为需要使用 O(1) 时间复杂度,并且原地进行更改,那么我们的思路其实相对非常简单,就是直接将列表最后一个元素和第一个元素进行置换,直到到达对称轴处。
代码:
class Solution:
def reverseString(self, s: List[str]) -> None:
"""
Do not return anything, modify s in-place instead.
"""
length = len(s)
for i in range(len(s)//2):
tmp = s[i]
s[i] = s[length - i - 1]
s[length - i - 1] = tmp
时间复杂度 O(n),空间复杂度 O(1)。
另外有一种非常 Pythonic 的解法:
class Solution:
def reverseString(self, s: List[str]) -> None:
"""
Do not return anything, modify s in-place instead.
"""
s[:] = s[::-1]
需要注意的是,这个方法因为使用了 list[:]
这种形式,实际上是对 list
进行了一个浅拷贝,使用了额外的存储空间,不是一个合规的答案。
Journalology: Lambert Academic Publishing (or How Not to Publish Your Thesis)
周五下午,我正在准备周一给导师们的汇报的时候,突然收到一封邮件,名为《Publishing Offer to ** (此处为我的名字)》,我好奇的点开这封邮件,是由一个名为 Lambert Academic Publishing 的公司的员工发来的,大意是他们对我的《Automatic extraction of embossed friezes on ceramic sherds by Deep Learning》这篇研究感兴趣,一个名为 Omniscriptum 的出版商有兴趣将其发表,问我能否将我的手稿发送给他们以便审核。
那么问题来了:
综上三点,我判断出这个所谓的 Lambert Academic Publishing 的组织,无非是个利用爬虫技术爬取初入科研圈子的年轻人的研究经历,并提供并不专业的咨询和发表机会,以某些手段来谋取利益的半吊子的学术组织。
为了印证我的猜测,在经历一番谷歌之后,在 Quora 和 Reddit 上都有不少针对 Lambert Academic Publishing(以下简称 LAP)的指控,在这些指控和证据中间,我找到一篇名为 Journalology: Lambert Academic Publishing (or How Not to Publish Your Thesis) 的文章。
这篇文章从 Facebook 等社交账号的细节中推测出 LAP 的骗人把戏:第一编辑的照片实际上是从 Fotostock 上下载的,第二编辑的照片是从 istock 上下载的,其他几个编辑的照片也一样是从一下开源或商业图片库中找来的。
另外,LAP 还有一些其他的常见欺骗行为,如:
作者还举了不少例子,感兴趣的读者可以点击链接进一步阅读。
分享一个 LaTeX 公式在线编辑器
分享一本在读的书
这周在读德国学者迪特里希•施万尼茨的《欧洲:一堂丰富的人文课》。
迪特里希•施万尼茨的这本书,从历史、文学、艺术和音乐等方面,讲述了现代青年应该了解的众多人文知识。
历史方面,作者尽量简要而不简单地讲述了欧洲从众神的迷乱开始,到《伊利亚特》与《奥德赛》,再到特洛伊木马与拉奥孔、圣经、出埃及记、希腊雅典的艺术、三大哲学巨擘苏格拉底、柏拉图和亚里士多德,再到罗马历史和基督教、浩浩荡荡的一千年中世纪,再讲到文艺复兴以及宗教改革,之后再到启蒙运动和法国大革命、拿破仑的陨落和三月革命,两次世界大战一直到现代社会。可以说,这本书帮助我理清了整个欧洲历史的脉络,能够与中国的唐宋元明清朝代做一个对应。
文学方面,作者介绍了几种基本的文学类型和创作形式,并对重要的欧洲文学作品均作了简要解读。艺术方面,作者介绍了罗曼与哥特艺术、巴洛克、洛可可、古典与浪漫主义、印象主义和委拉斯凯兹。作者还对音乐史和性别讨论史略作介绍。另外,作者对近现代的大哲学家、思想家以及理论和科学的世界观也有所讲述。
第二部分的能力篇,作者对语言和文学创作、如何选书读书、各国风俗等方面也有不少篇幅的介绍,非常值得一读。
这本书的语言非常诙谐,在我印象里德国人应该是非常严谨的才对,结果却能在书中看到不少诸如「钱本身是没有生殖能力的,当犹太人通过利息使钱变多,他们表现得就像是巫师,与钱交欢生下“小钱”」、「从焚毁书籍到焚毁民众只有一步之遥」之类的句子的时候,总能让人莞尔一笑。
分享几页书摘: