1. Algorithm
题目: 96. Unique Binary Search Trees
Given n, how many structurally unique BST's (binary search trees) that store values 1 ... n?
Example:
Input: 3
Output: 5
Explanation:
Given n = 3, there are a total of 5 unique BST's:
1 3 3 2 1
\ / / / \
3 2 1 1 3 2
/ / \
2 1 2 3
Solution:
动态规划
时间复杂度: O(n^2), 空间复杂度: O(n)
class Solution:
def numTrees(self, n: int) -> int:
counts = [1, 1]
for i in range(2, n+1):
count = 0
for j in range(i):
count += counts[j] * counts[i-j-1]
counts.append(count)
return counts[-1]
2. Review
As a Leader, Time Is Your Most Valuable Resource
作者是亚马逊的技术总监,在本文中讲述了作者学到的一些更好工作的宝贵经验。时间是最宝贵的资源,我们不可能让我们的时间变得更多,但是我们可以分配我们的时间,工作是永远都做不完的,我们需要知道对于我们来说最重要的任务,采用二八原则,把更多的时间和精力分配到实现自己的最重要的目标的任务上去,而不是去盲目地工作,盲目地完成无穷无尽的任务,在各个方向之间打转,最终无法实现自己设定的目标。不要想着去把所有的工作都做好,而是要去把重要的工作做好,当需要的时候,去把那些不重要的任务舍弃,从而让自己可以专注到对自己来说真正重要的任务和工作上。其实更加努力并不是一个非常管用的策略,我们不可能完成一切,实现所有目标,如果抱着去完成一切的心态,那么最终的结果只会是一事无成。
3. Tip
适用场景: 想要回到某个commit,但是又不想丢失那个commit之后所做的修改,只是想要增加一个新的commit,这个新的commit状态和想要回退的那个commit的状态一样
限制: 只能用于commit,不能用于file,需要working tree是干净的,没有基于HEAD做任何修改
语法:
git revert [--[no-]edit] [-n] [-m parent-number] [-s] [-S[<keyid>]] <commit>…
git revert --continue
git revert --quit
git revert --abort
示例:
git revert HEAD~3
添加一个新的commit,并且这个commit的内容和HEAD~3的是一样的
4. Share
本周看完了《拖延心理学》这本书,里面提到了一些应对拖延的策略,通过这本书对拖延的成因以及影响有了更加系统的了解,也对自身的拖延有了一个更好的认知,我也写了这本书的读书笔记。
链接: 拖延心理学