待复习内容:
数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、trie树
算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法
递归
当观察到一下特征的问题我们可以考虑使用递归:
- 一个问题的解可以分解为几个子问题的解。
- 这个问题与分解之后的子问题,除了数据规模不同,求解思路完全一样。
- 存在基线/终止条件。
常用数据接口
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
笔试常用库记录
from collections import deque
from collections import defaultdict
from collections import Counter
deque
deque可以实现双头队列
queue = deque(["Eric", "John", "Michael"])
queue.append("Terry") # Terry arrives
queue.append("Graham") # Graham arrives
queue.popleft() # The first to arrive now leaves
'Eric'
queue.popleft() # The second to arrive now leaves
'John'
>>> queue # Remaining queue in order of arrival
deque(['Michael', 'Terry', 'Graham'])
defaultdict
defaultdict能够规避KeyError异常的问题,主要使用方法如下
dict1 = defaultdict(int)
dict2 = defaultdict(set)
dict3 = defaultdict(str)
dict4 = defaultdict(list)
Counter作为dict 字典的子类,其优点在于,如果在 Counter 中查找一个不存在的元素,不会产生异常,而是会返回 0