python - 优化用于更改列表的最小函数

标签 python algorithm performance

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

我从一开始就想到,我可以使用 collections Counter 来对列表中的元素进行计数。然后我找到最小值(已经是 O(2*n)),并且每次删除一个元素时,我都会从字典键的值中减去 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

这样就不用每次都找了

关于python - 优化用于更改列表的最小函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38537346/

相关文章:

python - 从 IP 地址获取主机名

python - 如何保护 Python 代码不被用户阅读?

将元素添加到嵌套列表的Pythonic方法

algorithm - 什么是确定是否可以从一组数字加法构建传入数量的好算法?

asp.net - 我应该将这些图像变成 Sprite 吗?如果是,我会怎么做? (含图片)

sql-server - 如何在我的开发机器上模拟网络延迟?

performance - 同时将变量更新为相同值的线程安全性

python 女服务员作为 windows 服务

algorithm - 唯一随机生成 ID 的好算法

c++ - 找到上信封的最大长度