在O(n)时间内找到正确的路径

时间:2015-04-14 02:19:43

标签: java python c algorithm time-complexity

考虑从源到目的地的路径,但是混乱了。

例如

A B      E F
B C      A B
C D  ->  D E
D E      C D
E F      B C

假设没有循环,给定混乱路径我们可以在O(n)时间内返回原始路径。

1 个答案:

答案 0 :(得分:1)

路径的开头是一对中出现的元素,但不是第二个。在路径中从开始到下一个节点构建一个映射,并遍历它。

这三个步骤中的每一步都是O(n),给出了O(n)整体解决方案。

这是Python 2.7中的一些示例代码:

import sys

follow = dict(line.strip().split() for line in sys.stdin)
x = set(follow).difference(follow.itervalues()).pop()
while x:
    print x
    x = follow.get(x)

示例运行:

$ echo -e "E F\nA B\nD E\nC D\nB C" | python follow.py 
A
B
C
D
E
F