class Solution: def canCompleteCircuit(self , gas , cost ): # 走一圈的意思是从某个加油站出发再走回这个加油站 # write code here if len(gas) == 1: if gas[0] < cost[0]: return -1 else: return 0 l = [1 for i in range(len(gas))] # 假设从每个加油站出发都能走一圈 for i in range(len(gas)): # 外层循环,从每个加油站出发一次,看看是否能够走回来 num = gas[i] # 从当前加油站出发,先把油加上 for j in range(len(gas)): if num < cost[(i+j)%len(gas)]: # 走不到下一个加油站,就证明从当前加油站出发无法走一圈 l[i] = 0 # 当前加油站标记为0,也就是标记为无法走一圈 break else: num -= cost[(i+j)%len(gas)] # 能走到下一个加油站,扣除耗油 num += gas[(i+j+1)%len(gas)] # 把下一个加油站的油加进邮箱 if 1 in l: return l.index(1) return -1