2024-04-19 15:27:24 发布
网友
我需要一个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))算法,而没有提到对列表进行排序。在
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,或其他任意值)
O(nlogn)
None
如果结果列表中元素的顺序无关紧要,最简单的解决方案就是排序,然后迭代,并排除a[i] == a[i+1]的元素。结果将是一个包含所有唯一元素的排序列表,并在O(nlogn)中完成
a[i] == a[i+1]
祝你好运。在
你可以试试这个。在
因为这是一个赋值,我只想提示你-你可以使用set解决方案,并通过使用OrderedDict而不是常规集来获得
O(nlogn)
最坏情况下的性能(键的映射无关紧要,可以将它们全部映射到None
,或其他任意值)如果结果列表中元素的顺序无关紧要,最简单的解决方案就是排序,然后迭代,并排除
a[i] == a[i+1]
的元素。结果将是一个包含所有唯一元素的排序列表,并在O(nlogn)
中完成祝你好运。在
相关问题 更多 >
编程相关推荐