算法
.
二叉树
完全二叉树
- 树的深度=一直遍历最左节点的长度
- 左子树深度==右子树深度,左子树是全满的完全二叉树,如果左子树深度大于右子树深度,右子树是全满的完全二叉树
平衡二叉树
所有节点左右子树高度不大于1
字典序
就是按照字典排列顺序,英文字母按下面方式排列:
1 | ABCDEFG HIJKLMN OPQRST UVWXYZ |
回溯
显回溯
pre是公共变量,遍历完这种情况要记得pop(),加入结果时记得copy()
隐回溯
pre是函数内传递的变量,直接传就ok
去重
去res中重复元素
排序数组
可以用
1
num[i]=num[i-1]跳过同层重复元素的选取(注意:子层不跳过)
set去重
排序问题去重
使用used数组
1 | used=[True, ..., False, False] |
位运算
基础操作
取反
异或操作,要取反的区域为1,不取反区域为0
优先队列
只能实现最小堆,通过再所有元素前加-号这个trick可实现最大堆
1 | pq=[] |
优先队列的元素可以是tuple
1 | >>> h = [] |