学习笔记 这周学习了递归算法、分治与回溯。分治/回溯本质上就是递归,只是递归的一个细分类,一种较为复杂的递归。 递归思维中要注意:
- 不要人肉进行递归
- 找重复子问题
- 使用数据数学归纳法思维 当中若发现题目是包含找寻重复性时,可能可以使用下列解题方法:
- 最近重复性:
- 递归/分治/回溯
- 最优重复性
- 动态规划
递归代码模版
- 递归终止条件
- 处理当前层逻辑
- 下探到下一层
- 清理当前层
分治代码模版 (同递归代码模版) 3.5 在3与4中间插入 组合处理结果 的操作
回溯的思维就是地主家的傻儿子,每个结果都去试,遇到不对的就修正,所以如果看到题目是查找全部的排列组合,就可以尝试使用回溯的方式解决,例如N皇后、全排列、全排列 II。当然有时候可以不这么傻,可以使用剪枝的方式减少递归的层数与计算的数量
[105]从前序与中序遍历序列构造二叉树当中复习了二叉树遍历方法的特性 前序: root [左子数] [右子树] 中序: [左子数] root [右子树] 后序: [左子数] [右子树] root