1.贴题
题目来自PythonTip
加油站
一个环形的公路上有n个加油站,编号为0,1,2,…n-1,
每个加油站加油都有一个上限,保存在列表limit中,即limit[i]为第i个加油站加油的上限,
而从第i个加油站开车开到第(i+1)%n个加油站需要cost[i]升油,cost为一个列表。
现在有一辆开始时没有油的车,要从一个加油站出发绕这个公路跑一圈回到起点。
给你整数n,列表limit和列表cost,你来判断能否完成任务。
如果能够完成任务,输出起始的加油站编号,如果有多个,输出编号最小的。
如果不能完成任务,输出-1。
2.说明
原油箱里的油加上加油站能加到的上限的油大于消耗的油(每站都是)即可。
3.参考代码
flag = 0 #是否找到了最小编号加油站的flag,默认为假
res = [limit[i] - cost[i] for i in range(n)] #将上限列表和消耗列表逐个元素相减,得到差值列表
res = res * 2 #由于加油站为环形,因此现将差值列表扩展为两倍长度
for i in range(n): #模拟查找,从第一个开始找,找到最后一个
m = res[i:i+n] #对差值列表进行切片,只取长度为n的部分
p = 0 #开始油箱油量为空