我有一堆需要合并的列表。每个列表都有一个排序,并且每个排序都与原始列表的排序一致。(所谓“一致”,是指每个列表都可以通过从原始列表中删除项目来重现,而无需重新排列任何项目。)
我的问题是我没有原始列表,我必须使用我拥有的部分列表尽可能地复制它。
例如,考虑以下有序列表:
a = ["first", "fourth", "fifth", "sixth", "eighth", "sophomore", "junior"]
b = ["second", "third", "fourth", "sixth", "seventh", "eighth", "freshman", "sophomore", "senior"]
c = ["first", "second", "freshman", "sophomore", "junior", "senior"]
...
partial_lists = [a, b, c, ...]
从这三个列表中,可以恢复原始列表。然而,在某些情况下,这可能行不通。无论如何,我希望创建一个列表,merged_list
使其能够保留每个部分列表的顺序。(也就是说,理论上,任何指定的部分列表都可以仅通过操作merged_list
来重建。)可以安全地假设每个部分列表不包含重复项,并且也必须不包含任何重复项。merged_list
merged_list.remove()
merged_list
对于这个例子,merged_list
将是["first", "second", "third", "fourth", "fifth", "sixth", "seventh", "eighth", "freshman", "sophomore", "junior", "senior"]
是否存在一种有效的算法可以处理任意数量的部分列表?