ARTS 第5周
1. Algorithm
题目: 102. Binary Tree Level Order Traversal
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).
For example:
Given binary tree [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
return its level order traversal as:
[
[3],
[9,20],
[15,7]
]
Solution:
时间复杂度: O(n), 空间复杂度O(n)
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def levelOrder(self, root: TreeNode) -> List[List[int]]:
if root is None:
return []
result, current_level = [], [root]
while current_level:
next_level, vals = [], []
for node in current_level:
vals.append(node.val)
if node.left:
next_level.append(node.left)
if node.right:
next_level.append(node.right)
current_level = next_level
result.append(vals)
return result
2. Review
Five important lessons from four years as a software developer
本文的作者分享了他从业四年以来学到的经验:
-
永远不要做这些假设:
- 永远不要假设别人一定会按照你要求的去做某事
- 永远不要假设别人一定会理解你告诉他们的东西,即使他们说他们理解
- 永远不要假设别人一定是错的
-
非技术性的问题是最困难的
-
思考在前,编码在后
-
你创造的内容要比你用来创造它们的工具更重要
-
团队中的每一个角色都同等重要
3. Tip
hive和presto中实现类似mysql中的用一个日期减去x天的功能:
presto: CURRENT_DATE - INTERVAL '30' DAY > should_date
hive: DATE_SUB(CURRENT_DATE, 30) > should_date
4. Share
本周正在看《拖延心理学》这本书,虽然还没有看完,但是有一种相见恨晚的感觉啊,我不知道其他人,但是我自己对了解事实真相以及进化有着一种痴迷,决定以后多看一些行为心理学的书籍,从而对自己的一些行为有着更加真实的了解。
我自己其实算是一个比较自律的人,一直以为自己的拖延症应该比较轻,但是看了这本书之后,发现我的拖延症还是比较严重的,我既恐惧失败,也恐惧成功。而拖延其实是一种策略,一种应对压力、恐惧、掩盖自身缺点的一种策略,这种策略会让我们去选择一些比较轻松娱乐的事情去做,从而不去面对问题和压力,这种策略可能在当时会带来一定的不错结果,让我们可以暂时忘却问题和逃避压力,比如说我们通过看电视、玩游戏、看小说等等来推迟一些我们内心觉得我们应该去做的事情,但是拖延这种策略并不能真正解决问题,问题还是会存在,而且当我们不得不去面对问题的时候,压力、恐惧等等会更加严重,我们的处境会更加糟糕,最终就会导致比较严重的结果。
造成拖延的原因有很多方面,有情绪原因、时间原因、生理原因以及人际关系原因,拖延带来的结果有两部分,一部分是内在的结果,就是各种情绪感受,比如说: 焦虑、后悔、自我谴责、绝望、愤怒等等;另一部分是外在的结果,比如: 工作、家庭、学业、人际关系中的一些问题和挫折。
这周只是读了对拖延的认知的部分内容,至于应对拖延的方法论还没有读到,正好要到月底了,自己每个月都会写一本书的读后感,这个月就是它了,下周把这本书整体读完,然后写一篇读后感。