leetcode 279 BFS的时间复杂度

来源:6-5 BFS和图的最短路径 Perfect Squares

benjaminfan

2018-06-06

老师,想问一下279 使用BFS的时间复杂度是怎么分析出来的。

写回答

1回答

liuyubobobo

2018-06-06

无论是在树结构中,还是图结构中,对于节点的遍历,无论是BFS,还是DFS,都是O(V+E)级别的。其中V是顶点个数;E是边数。这背后的直观理解也很简单,在遍历过程中,每个节点访问一次,每条边访问一次。


其中对于树,O(V+E) = O(V),这是因为一个含有V个节点的树,有V-1条边,所以O(V+E) = O(2*V-1) = O(V)


对于图,稍微复杂一些。通常我们说O(V+E),但是只有在稠密图的情况下,E才会和V产生显著的复杂度差别。在大多数情况下,处理的图都是稀疏图,此时可以近似的看做V和E在一个复杂度里,我们通常在不是特别严谨的场合,也可以说稀疏图的遍历也是O(V)级别的。因为每个节点肯定要访问一次。


这个问题的BFS是一个图模型,并且显然是一个稀疏图。(比如有100个节点的话,每个节点最多只会有10条边(10个完全平方数),远远小于99条边)所以,他的时间复杂度是O(n)的,n是数字个数。在我们的图模型中,每个数字是一个节点:)

0
1
benjaminfan
非常感谢!
2018-06-07
共1条回复

玩转算法面试-- Leetcode真题分门别类讲解

课程配套大量BAT面试真题,高频算法题解析,强化训练

7410 学习 · 1150 问题

查看课程