Skip to content

Latest commit

 

History

History
 
 

README.md

Week03 学习笔记

递归

递归就是寻找重复子过程。递归的过程虽然与人脑思维逻辑不同,但符合计算机的执行流程,因此很常用。 递归特别适用于二叉树、链表等操作,这些数据结构本身的定义就含义递归性质。

递归方法模板

1)终止条件 2)当前层逻辑处理 3)下钻 4)恢复当前层状态

解决递归问题的三个要点

1)不要人肉递归 2)找到最近最简方法,将其拆解为可重复解决的问题(寻找重复子问题) 3)数学归纳法思维

分治

分治的本质就是递归,也是寻找最近重复子问题。 分治将当前问题拆分为多个重复子问题,依次递归执行子问题,然后合并子问题的解。

分治方法模板

1)终止条件 2)处理当前层逻辑,拆分当前问题 3)解决子问题 4)合并子问题的解 5)恢复当前层状态

回溯

回溯法是采用试错的思想,尝试去分步解决一个问题。在分步解决的过程中,可能取消当前操作尝试其他可能。 回溯法一般通过递归来实现。 在最坏情况下,时间复杂度是指数级。

回溯法模板

1)终止条件 2)选择一个操作,判断是否需要剪枝 3)递归调用下一步操作 4)撤销当前操作 5)循环执行第二步,直到遍历所有操作