5936. 引爆最多的炸弹
题目地址(5936. 引爆最多的炸弹)
https://leetcode-cn.com/problems/detonate-the-maximum-bombs/
题目描述
前置知识
BFS
公司
暂无
思路
刚开始的想法是计算图的最大联通分量,因此使用并查集就可以解决。
后来提交的时候发现有问题。这是因为题目限制了引爆关系指的是:某一个炸弹的引爆范围是否会引爆到其他炸弹的圆心,而不是相交就行。这提示了我们:炸弹 a 引爆炸弹 b 的情况下,炸弹 b 不一定能够引爆炸弹 a。
也就是说我们将炸弹看做是点,炸弹 a 如果能够引爆炸弹 b,那么就有一条从 a 到 b 的边。而并查集无法处理这种关系。
因此我们可以使用 BFS 来做。首先预处理出图,然后对于图中每一点 i 进行 BFS,然后在这 n 次 bfs 中将最大引爆炸弹数记录下来返回即可。
关键点
BFS
代码
语言支持:Python3
Python3 Code:
复杂度分析
令 n 为数组长度。
时间复杂度:$O(n^3)$. 其中建图部分时间复杂度为 $O(n^2)$,。并且由于每个点的出度最多为 n,因此对于每一个点 i BFS 的时间复杂度为 $n^2$,由于一共有 n 个点,因此总时间复杂度为 $O(n^3)$。
空间复杂度:$O(n^3)$
此题解由 力扣刷题插件 自动生成。
力扣的小伙伴可以关注我,这样就会第一时间收到我的动态啦~
以上就是本文的全部内容了。大家对此有何看法,欢迎给我留言,我有时间都会一一查看回答。更多算法套路可以访问我的 LeetCode 题解仓库:https://github.com/azl397985856/leetcode 。 目前已经 40K star 啦。大家也可以关注我的公众号《力扣加加》带你啃下算法这块硬骨头。
关注公众号力扣加加,努力用清晰直白的语言还原解题思路,并且有大量图解,手把手教你识别套路,高效刷题。
最后更新于