从O(n logn)tim中的列表中删除重复的元素

2024-04-19 15:27:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要一个O(nlogn)算法来删除列表中重复的元素。我知道我可以用一个集合,例如,但我需要一个如此复杂的算法,我不知道如何编码。既然我现在有了这段代码,但我不知道它的复杂性是什么,尽管我相信它不是n logn

def removing(a):

for e in a:
    if e in a[a.index(e)+1:]:
        a.remove(e)

return a

这个练习说它需要一个O(n*log(n))算法,而没有提到对列表进行排序。在


Tags: 代码in算法元素编码列表forindex
2条回答
x=[1,2,3,4,6,6,2,3,1]

dic={}
for i in x:
    dic[i]=0

print dic.keys()

你可以试试这个。在

因为这是一个赋值,我只想提示你-你可以使用set解决方案,并通过使用OrderedDict而不是常规集来获得O(nlogn)最坏情况下的性能(键的映射无关紧要,可以将它们全部映射到None,或其他任意值)

如果结果列表中元素的顺序无关紧要,最简单的解决方案就是排序,然后迭代,并排除a[i] == a[i+1]的元素。结果将是一个包含所有唯一元素的排序列表,并在O(nlogn)中完成

祝你好运。在

相关问题 更多 >