我怎么能找到最小的项目,这是小于一个数字从列表的列表堆?



我今天考试有一道题。假设我有一个这样的列表:

[[0, 0], [95, 1], [0, 5], [200, 3], [1000, 4], [300, 2]]

如何找到ele[0]值小于某一特定值且ele[1]在所有元素中最小的元素?例如:如果输入"n=100?"则[0, 0], [95, 1], [0, 5]ele[0]值小于100,[0,0]最小。所以输出应该是[0,0]题目要求我们用堆来做,但我不知道怎么做。如有任何帮助,不胜感激。

下面是一个可行的解决方案:

from heapq import heappush as push, heappop as pop
def find_min_ele(lst, n):
h = []
for a, b in lst:
if a < n:
push(h, [b, a])  # reverse!
return pop(h)[::-1]  # reverse again

>>> find_min_ele([[95, 1], [0, 5], [200, 3], [1000, 4], [300, 2]], 200)
[95, 1]

最新更新