题目:
给定一组站点,每个站点包含两个数据gas[i]和cost[i],分别为该站点可加的油量和跑到下一站点的油量。这些站点组成一个环,求从哪个站点出发可以跑完整个环,若不能跑完整个环,则返回-1.
解题思路:
1.对站点进行遍历,从每个站点出发一次,看从该站点出发能不能跑完整个环。该思路会超时。
2.考虑该问题的规律和特征。有两个特征:a.若sum(gas)<sum(cost),则返回值为-1. b.若从0-n的sum(gas)<sum(cost),则n以前的所有站点都不能作为起始站点。
代码(Python):
class Solution(object):
def canCompleteCircuit(self, gas, cost):
"""
:type gas: List[int]
:type cost: List[int]
:rtype: int
"""
if sum(gas)<sum(cost):
return -1
else:
res = 0
station = 0
for i in range(len(gas)):
if res+gas[i]-cost[i]<0:
station = i+1
res = 0
else:
res = res+gas[i]-cost[i]
return station