DFS
深度优先搜索的题一般都是遵循一套固定的模板,无论是一维的排列组合搜索还是二维的矩阵搜索,注意的要点都是很类似的,这里列几条关键点总结一下
- 一般的都是在for循环里面递归调用自身从而实现DFS
- 为避免栈击穿以及搜索了重复的结果,查重是很重要的,一般都是用dict在本级函数中查重
- 大部分DFS题都有一个基于题目条件本身的特殊条件判断(如N皇后问题的对角线攻击查重,Palindrome partition的对称判断)
- DFS的出口条件设置一定要小心,一些题的出口设置不止start==end这么简单(如Generate parenthesis,Restore IP address)