有2个东西在前面明确一下:
- 很明显的如果
sum(gas)<sum( cost)
则不能跑完。 - 如果
sum(gas)>=sum(cost)
,则存在相应的起始点跑完一圈。
具体2怎么证明,用数学公式,我还真想不出来。 - 如果在某一节点,没有油了,则在该节点下一节点重新开始。
class Solution:
def canCompleteCircuit(self, gas, cost):
"""
:type gas: List[int]
:type cost: List[int]
:rtype: int
"""
if sum(gas)<=sum(cost):
return -1
# 剩余油量
tank=0
# 起始位置
start=0
for x in range(len(gas)):
tank+=(gas[x]-cost[x])
# 转移到下一节点的条件
if tank<0:
start=i+1
tank=0
return start