ARTS 第 26 周

每周完成一个 ARTS:
Algorithm: 每周至少做一个 LeetCode 的算法题
Review: 阅读并点评至少一篇英文技术文章
Tips: 学习至少一个技术技巧
Share: 分享一篇有观点和思考的技术文章


Contents:


Algorithm

344. Reverse String

题目: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 进行了一个浅拷贝,使用了额外的存储空间,不是一个合规的答案。


Review

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 的出版商有兴趣将其发表,问我能否将我的手稿发送给他们以便审核。

那么问题来了:

  1. 我的这篇研究只是学校的一个学生项目,从技术深度和科研角度来看根本没有任何发表的价值。
  2. 他们又是如何知道我有这篇研究的呢?事实上,我对这个《Automatic extraction of embossed friezes on ceramic sherds by Deep Learning》一点都不熟悉,还是去谷歌了一番才知道被发表在学校的项目手册上,而这个组织也并没有告诉我他们是如何知道我这个研究的。
  3. 这封邮件的开头,在「Dear」和「我的名字」之间,有两个「空格」,而一般来说,英文邮件的称谓部分,「Dear」和名字之间只需要有一个空格。

综上三点,我判断出这个所谓的 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 还有一些其他的常见欺骗行为,如:

作者还举了不少例子,感兴趣的读者可以点击链接进一步阅读。


Tips

分享一个 LaTeX 公式在线编辑器

LaTeX 公式在线编辑器


Share

分享一本在读的书

这周在读德国学者迪特里希•施万尼茨的《欧洲:一堂丰富的人文课》。

迪特里希•施万尼茨的这本书,从历史、文学、艺术和音乐等方面,讲述了现代青年应该了解的众多人文知识。

历史方面,作者尽量简要而不简单地讲述了欧洲从众神的迷乱开始,到《伊利亚特》与《奥德赛》,再到特洛伊木马与拉奥孔、圣经、出埃及记、希腊雅典的艺术、三大哲学巨擘苏格拉底、柏拉图和亚里士多德,再到罗马历史和基督教、浩浩荡荡的一千年中世纪,再讲到文艺复兴以及宗教改革,之后再到启蒙运动和法国大革命、拿破仑的陨落和三月革命,两次世界大战一直到现代社会。可以说,这本书帮助我理清了整个欧洲历史的脉络,能够与中国的唐宋元明清朝代做一个对应。

文学方面,作者介绍了几种基本的文学类型和创作形式,并对重要的欧洲文学作品均作了简要解读。艺术方面,作者介绍了罗曼与哥特艺术、巴洛克、洛可可、古典与浪漫主义、印象主义和委拉斯凯兹。作者还对音乐史和性别讨论史略作介绍。另外,作者对近现代的大哲学家、思想家以及理论和科学的世界观也有所讲述。

第二部分的能力篇,作者对语言和文学创作、如何选书读书、各国风俗等方面也有不少篇幅的介绍,非常值得一读。

这本书的语言非常诙谐,在我印象里德国人应该是非常严谨的才对,结果却能在书中看到不少诸如「钱本身是没有生殖能力的,当犹太人通过利息使钱变多,他们表现得就像是巫师,与钱交欢生下“小钱”」、「从焚毁书籍到焚毁民众只有一步之遥」之类的句子的时候,总能让人莞尔一笑。

分享几页书摘: