我今天考试有一道题。假设我有一个这样的列表:
[[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]