【发布时间】:2019-04-10 18:16:34
【问题描述】:
假设我有一个如下所示的树形图,其中一个节点可以有多个子节点,依此类推..(一个节点只能有一个父节点)。如果我有一个沿该图的路径列表,我如何找到这些路径中唯一且最短的子集?
示例输入(路径列表):
[1, 2, 3]
[1, 2]
[1, 7]
[1, 8, 9, 10]
预期输出:
[1, 2]
[1, 7]
[1, 8, 9, 10]
[1, 2, 3] 路径被忽略,因为它比 [1, 2] 长,而 [1, 8, 9, 10] 路径被保留,因为它是唯一的。
【问题讨论】:
-
[1, 2, 3] [1, 2, 4]的预期输出是什么? -
@Cid 如果 [1] 或 [1,2] 不存在,则两者都应该出现在输出中,因为它们是唯一的。
-
所以基本上如果存在前缀,那么你删除那个元素?
-
@WillemVanOnsem 它看起来像。问题变得非常简单,术语 graph 和 tree 可以忽略,因为整个“道路”作为输入发送。不需要解析树,这只是数组处理。 最短路径在这里,在我看来,使用不当
-
@Cid: 好吧,我们可以在这里为每个项目更新前缀树,但实际上,它在 graph 和 tree 方面更简单i>.
标签: algorithm tree graph-theory shortest-path