List
- l.pop(i)弹出第 i 个元素
- for index, num in enumerate(nums)
- l[::-1]
- l.count(x)
- min(l, key = lambda x: abs(target – x))
-
Sort Array by Increasing Frequency:
def frequencySort(self, A): count = collections.Counter(A) return sorted(A, key=lambda x: (count[x], -x))
Dictionary
- defaultdict(int)
- counts = collections.Counter(nums)
- dictionary.get(keyname, optional_value_if_key_not_exist_default_None)
Set
- set1 & set2
Linked List
- head.next
Tree
- if node
- node.val, node.left, node.right
Stack
- Min Stack
Heap
- 堆是一种根本的数据结构,堆的构造是一棵齐全二叉树,并且满足沉积的性质:每个节点 (叶节点除外) 的值都大于等于 (或都小于等于) 它的子节点。
- import heapq
其余
- float(‘inf’)
- mod(value,2)
- ord(‘A’)
- yield
罕用解题技巧
- 遍历过程中用 hashmap 存储,防止反复遍历
- 2 pointers
- 二分法,3 pointers(left,pivot,right)
- Dynamic Programming, 存储上一轮的后果,遍历过程中不断更新变量
- DFS Depth First Search
- BFS Breadth First Search
- bucket sort / counting sort
- Greedy: 贪婪算法(greedy algorithm),又称贪心算法,是一种在每一步抉择中都采取在以后状态下最好或最优(即最无利)的抉择,从而心愿导致后果是最好或最优的算法。贪婪算法与动静布局的不同在于它对每个子问题的解决方案都做出抉择,不能回退。动静布局则会保留以前的运算后果,并依据以前的后果对以后进行抉择,有回退性能。