问题
解答
贪心算法
贪心算法的灵魂之处:不必受题目条件约束,寻找到局部最有利的方法。
a=正汽油量
b=负汽油量
Q:为什么要分正负?
A:为了确定出发点。
a+b=剩余的汽油量
,如果小于零就不能绕环路行驶一周,则返回 -1;否则返回出发时加油站的编号。
时间复杂度: O(N)
class Solution:
def canCompleteCircuit(self, gas: List[int], cost: List[int]) -> int:
a = b = res = 0
n=len(gas)
for i in range(n):
a += gas[i] - cost[i]
if a < 0:
b += a
a = 0
res = i+1
return -1 if a + b < 0 else res
调试结果: