编程题方法总结

链表:

遍历:

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

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

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

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

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

回溯算法

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值