我有大量的数字序列(例如[1、3、5、7])。我有两个要求: 1.删除重复项。 2.如果有一个序列是另一个序列的子序列,我也只想保留最长的序列。例如:
[1, 3, 2]
[1, 3, 2]
[1, 3, 2, 4]
[1, 3, 2, 4, 5]
[1, 2, 2, 3, 4]
然后只保留:
[1, 3, 2, 4, 5]
[1, 2, 2, 3, 4]
我使用元组存储数字序列。然后通过Counter(tuple_collection)删除重复项。目前,我只能通过匹配每个元素来提出检查每对的方法。但是,是否有更有效的方法来进行下一步?
答案 0 :(得分:0)
是的,有一个更有效的解决方案。您可以实现Trie。
在您的情况下:
特里将是一个树状的数据结构,其节点存储了 名单。通过以特定方式构造节点,可以通过遍历一个 树的分支路径。
最初创建Trie是为了存储字符串并执行诸如搜索前缀之类的操作等,当您拥有无数的字符串时,它们会占用较少的内存。
详细了解complexities of a Trie和fast non-standard data structures in python。
希望这会有所帮助。祝你好运。