优化最小功能以更改列表

时间:2016-07-23 01:41:01

标签: python algorithm performance

我正在处理一个问题,我需要跟踪列表中的最小数量。然而,这个列表不断减少,比如从一百万个元素到一个元素。我正在寻找一种方法,以避免每次我得到一个单元素较小的列表时检查最小值。跟踪最小元素一样,如果删除,则下一个最小值变为最小值。我想在线性时间内完成这个任务。(考虑到问题的机制,这应该是可以实现的)

自从我开始使用以来,我可以使用collections Counter来计算列表中的元素。然后我找到最小值(已经O(2*n)),每次删除一个元素时,我从字典键的值中减去1。但是,当最小数量的计数耗尽时,我仍然需要找到第二个最小元素,以便它可以替换它。

请帮我找到解决方法。我想说这是一个有趣的问题。

1 个答案:

答案 0 :(得分:1)

让我们说你的程序需要一些时间来对该列表进行排序

a = [10,9,10,8,7,6,5,4,3,2,1,1,1,0] # you're just removing 
a = sorted(a) #sort ascending

# then you remove stuff from your list
# but always a[0] is minimum element

min = a[0] #you must be careful, there must be at least one item so check that before 
#getting the min

所以每次都不需要搜索