[算法复习笔记]算法相关知识记录(更新中)

待复习内容:
数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、trie树
算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法

递归

当观察到一下特征的问题我们可以考虑使用递归:

  1. 一个问题的解可以分解为几个子问题的解。
  2. 这个问题与分解之后的子问题,除了数据规模不同,求解思路完全一样。
  3. 存在基线/终止条件。

参考B站视频

常用数据接口

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'])

参考:list与deque的用法

defaultdict

defaultdict能够规避KeyError异常的问题,主要使用方法如下

dict1 = defaultdict(int)
dict2 = defaultdict(set)
dict3 = defaultdict(str)
dict4 = defaultdict(list)

Counter作为dict 字典的子类,其优点在于,如果在 Counter 中查找一个不存在的元素,不会产生异常,而是会返回 0

你可能感兴趣的:(算法,数据结构,贪心算法)