每周完成一个 ARTS:
Algorithm: 每周至少做一个 LeetCode 的算法题
Review: 阅读并点评至少一篇英文技术文章
Tips: 学习至少一个技术技巧
Share: 分享一篇有观点和思考的技术文章
题图:
题目:Binary Tree Level Order Traversal II
难度:Easy
题意:Given a binary tree, return the bottom-up level order traversal of its nodes’ values. (ie, from left to right, level by level from leaf to root).
示例:
Given binary tree [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
return its bottom-up level order traversal as:
[
[15,7],
[9,20],
[3]
]
解法:
这道题转换一下思路的话还是很简单的,只需要从上到下简单遍历一下树,再反向输出即可。
代码:
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def levelOrderBottom(self, root: TreeNode) -> List[List[int]]:
if root is None:
return []
res, cur = [], [root]
while cur:
next_lvl, vals = [], []
for node in cur:
vals.append(node.val)
if node.left:
next_lvl.append(node.left)
if node.right:
next_lvl.append(node.right)
cur = next_lvl
res.append(vals)
return res[::-1]
这周 Medium 的一篇高赞文章吸引了我的注意《7 Signs of Low Self-Esteem》。似乎中外都一样,文章套路很相似,例如《在 2020 年你一定需要知道的 xx 个 xx》or《xx 个技巧/书/工具帮助你 xxxx》,一般遇到这种文章我都划过去了,但这周的这篇,在偶然点进去之后,发现一些话确实说到了我的心坎里。《7 个低自尊的表现》:
其中我比较受益的是第三条。我也需要时刻提醒自己:
每当你想要批评别人时,你要记住,这个世界上所有的人,并不是个个都有过你拥有的那些优越条件。
尽管菲茨杰拉德的原意可能并非如此,尽管我们不可能事事时时都站在道德的绝对安全区里。
最近的研究中用到了 sktime
这个做时间序列处理的第三方库,有着与 sklearn
兼容的界面和相似的模块,并且对 statsmodels
的不少实用模块做了打包,做时间序列处理的同学一定要试一试。
由于 sktime
不少功能都基于 statsmodels
,一些模块会根据 statsmodels
的开发进行适配,所以有些 deprecated functions 的问题,计算结果输出时经常会遇到 future warnings
;另外 sktime
还在积极的开发中,部分功能也没有很好地实现,所以这方面也时常会有报错或者警告。当我在遇到警告时,如果代码没问题,警告仅仅是影响了输出,那么我会使用以下方法来将忽略警告:
import warnings
def fxn():
warnings.warn("deprecated", DeprecationWarning)
with warnings.catch_warnings():
warnings.simplefilter("ignore")
fxn()
上面这段代码会忽略所有 deprecated functions 的警告。如果你想忽略所有警告,你可以用:
import warnings
warnings.filterwarnings("ignore")
写这个话题其实是因为觉得之前拟定的「分享几个实用的快捷指令」实在是有些敷衍,虽然和瑞瑞同学聊起 ARTS 时表示「不能给自己太大的心理预期,否则不容易坚持下来」,但最近实在是有些怠惰,把这个话题写清楚也能从更深的层面上激励自己(尽管今天并不是一个写这个话题的好时机🙃)。
看了看知乎「你们都为什么读博」这个问题的讨论,有学物理的说情怀,有转码的找工作留美,也有逃避找工作的 or 纯粹因为博士毕业工资比较高的。可能大部分人读博士都是类似的原因,说一个好朋友 GG 的故事好了。
GG 是我法国的直系学长,搞室内定位算法的,一头光光的头发,憨厚可爱(说到这在法国认识我的人大概都知道我说的是谁了吧🌚)。工程师学校的毕业实习,GG 为公司解决了一个卡了技术 Leader 很久的关键问题,Leader 觉得 GG 大有可为,遂资助其读博。GG 也爽快地答应了。后来 GG 告诉我,他当时花了很久看了一篇公司引用的论文,觉得其中的技术细节没有讲明白,于是给这个论文的作者,一个印度数学家发了封邮件,没想到这个数学家居然回复了,还顺带解决了公司的问题。GG 读博两年多了,除了睡觉抽烟打刀塔做菜和买 Sandro,剩下的时间都在搞学习。我问 GG:你为啥读博?GG 告诉我:没读博士之前,我觉得博士很屌,都是阴差阳错。还说读上以后,发现博士都是你这样的肥宅。。。
记得大概两年前,在朋友圈看到有人分享这么一句话「如果你读博不是为了搞学术,那么读博的过程一定不是你想的那样。」两年前毕业找实习的时候,就在纠结是回国工作还是留下来继续读博。当时的想法大致如下:既然都在这边待了这么久,为什么不再坚持几年,拿个博士学位再回国(沉没成本+博士学位本身);现在海归硕士越来越多,竞争越来越激烈,工资也就那样(工资因素);博士学完回国还能去学校当个老师,进高校(前途考虑), etc. 其实读到一半,现在想想,不管是不是为了搞学术,读博的过程都不是我们想象的那样,甚至于生活都从来不是我们想象的那样,经历了 2020 年的我们一定深有体会。我深思以后,认为自己读博的初衷,在当时只想到了一半,即「拿博士学位」这件事,另一半,经过这一年多的学习,我认识到我确实想为人类做出一点贡献。下面这个图,很多人都见过,读研读博的过程,就是在你的子子领域做出一点点突破的尝试的过程。
生活是个 Random Walk,我们努力在其中寻找确定性的东西,它们足以温暖充满变数的当下。
共勉。
PS:GG 说要给我送 Watch 当圣诞礼物。。。