题目大意是给定一系列的加油站可以加的油量和每两个加油站之间的耗费的油量。求经过所有加油站一圈的方案。
提示:贪心算法
加油站加的油量-路上耗费的油量就是下一站的初始油量,如果这个油量是负的,那么显然是不能在上一站出发的。那么只能是从下一站开始,或者下下站,或者上一站的上一站开始的。那么start指针指向下一站。这样从头至尾试一遍,就可以知道哪一站出发是有可能的。
如果没有方案的话,那么加的总的油量-路上耗费的总油量应该是负数。
class Solution:
def canCompleteCircuit(self, gas: List[int], cost: List[int]) -> int:
tank,min_tank=0,0
res=0
for i in range(len(gas)):
tank+=gas[i]-cost[i]
if tank<min_tank:
res,min_tank=i+1,tank
return res if tank>=0 else -1