算法:数组算法闭环
检验一数组里,是否有闭环:
[{from: 1,to: 2}, {from:2, to:3}] 返回false
[{from: 1,to: 2}, {from:2, to:3}, {from: 3, to:1}] 返回true
[{from: 1,to: 2}, {from:2, to:3}, {from: 3, to:4}, {from: 4, to:2}] 返回 true
这应该怎么个解法
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
我觉得该问题的本质其实是“检测有向图中是否存在闭环”。
然而题目中的这些数组却都是边,我觉得比较简单的解法就是,先根据这些边构建出一个有向图,再去解决如何检测有向图中是否存在闭环的问题。
比如
这个数组是连续的,还是打乱的,连续的一遍遍历就行,不连续的复杂点
本质就是有向图找闭环。
(不要使用 0 节点编号)
PS:
怎么每次回答完问题就发现有人抢先了有向图查闭环可以用并查集,可以线性时间复杂度解决。
类似的题目
冗余连接
冗余连接II