Heap:贪心算法助手
Greedy Gas Fill
输入:target = 100, startFuel = 10, stations = [[10,60],[20,30],[30,30],[60,40]]
输出:2
解释:
我们出发时有 10 升燃料。
我们开车来到距起点 10 英里处的加油站,消耗 10 升燃料。将汽油从 0 升加到 60 升。
然后,我们从 10 英里处的加油站开到 60 英里处的加油站(消耗 50 升燃料),
并将汽油从 10 升加到 50 升。然后我们开车抵达目的地。
我们沿途在1两个加油站停靠,所以返回 2 。def minRefuelStops(target, startFuel, stations):
far = stop = 0
queue = []
stations.append((target, float('inf')))
for dist, fuel in stations:
startFuel -= (dist-far) # 一脚油门开到这儿
while startFuel < 0 and queue:# 不行,得去小本本上油最多的地方加油
startFuel -= heapq.heappop(queue)
stop += 1
if startFuel < 0: return -1
heapq.heappush(queue, -fuel) # 拿小本本记下最多可以加多少油
far = dist
return stop二叉堆

数组简单实现
例题:进程安排
例题:最大的K个数字
例题:最大平均通过率
例题:车队 II
Last updated