编程题方法总结

链表:

遍历:

BFS 和 DFS 本质上都是遍历,所以只要是需要遍历的算法,理论上都可以使用 DFS 或者 BFS。它们各自的特点和适用场景如下:

1、BFS 由于是水波纹式的扩散,它可以用于一些求解最短路径以及最优化问题,或者是可以用贪心算法解决的问题上,例如第 126 题、第 127 题 单词接龙,第 207 题、第 210 题:课程表,第 279 题:完全平方数,第 994 题:腐烂的橘子。

2、DFS 的基本思想也很简单,就是一条道走到底,只要前面有路就一直向前走,不撞南墙不回头。很多时候走迷宫就是这么走的。

DFS 如果用于搜索状态空间,就是大名鼎鼎的回溯搜索算法,它厉害的地方在于,可以使用一个状态变量去搜索所有的状态空间,这一点是节约空间的。我们可以想象用一根绳子,在遍历的时候变长变短,遍历的同时保存下来我们需要的那个状态。

BFS 就做不到,BFS 为了遍历就需要保存全部的状态,对于空间来说是个巨大的消耗。

回溯算法

的例题我有总结:在第 46 题的 题解 的最后。

发布了138 篇原创文章 · 获赞 18 · 访问量 2万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 技术黑板 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览