在给定的数组中,如何找到第二、第三、第四或第五个值?
如果我们在python中使用max()
函数,那么复杂度的顺序是什么,也就是说,与这个函数相关的max()
?
是的。
def nth_largest(li,n):
li.remove(max(li))
print max(ele) //will give me the second largest
#how to make a general algorithm to find the 2nd,3rd,4th highest value
#n is the element to be found below the highest value
如果性能是一个问题(例如:您打算经常调用它),那么您绝对应该始终对列表进行排序和消除重复,并且只保留第一个、第二个或第n个元素(即
o(1)
)。为此使用^{} 模块-它比“标准”
sort
更快。insort
允许您插入一个元素,bisect
将允许您查找是否应该插入(以避免重复)。如果不是,我建议更简单的:
如果反向索引看起来很难看,可以执行以下操作:
我会选择:
这比排序整个列表,然后获取第一个
n
多个元素更有效。有关详细信息,请参见heapq documentation。您可以使用
sorted(set(element))
:作为功能:
测试:
注意,这里只需要排序和删除一次重复,如果担心性能问题,可以缓存
sorted(set(li))
的结果。相关问题 更多 >
编程相关推荐