Tenho várias listas que preciso combinar. Cada uma dessas listas tem uma ordem, e cada ordem é consistente com a ordem da lista original. (Por consistente, quero dizer que cada lista pode ser reproduzida removendo itens da lista original, sem reorganizar nenhum item .)
Meu problema é que não tenho a lista original e tenho que reproduzi-la o mais fielmente possível usando as listas parciais que tenho.
Por exemplo, considere as seguintes listas ordenadas:
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, ...]
A partir dessas três listas, é possível recuperar a lista original. Em alguns casos, porém, isso pode não ser possível. De qualquer forma, quero criar uma lista merged_list
que merged_list
preserve a ordem de cada uma das listas parciais. (Ou seja, qualquer lista parcial especificada poderia, teoricamente, ser reconstruída merged_list
usando apenas merged_list.remove()
operações.) É seguro assumir que cada lista parcial não contém duplicatas e merged_list
também não deve conter nenhuma duplicata.
Para este exemplo, merged_list
seria["first", "second", "third", "fourth", "fifth", "sixth", "seventh", "eighth", "freshman", "sophomore", "junior", "senior"]
Existe um algoritmo eficiente que pode lidar com isso para um número arbitrário de listas parciais?