Leetcode 每日一题——134. 加油站
程序员文章站
2022-04-04 10:07:00
...
134. 加油站
在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。
你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。
如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。
**说明: **
- 如果题目有解,该答案即为唯一答案。
- 输入数组均为非空数组,且长度相同。
- 输入数组中的元素均为非负数。
该题的解题思路是筛选去除不可能是起点的加油站,C++代码如下:
class Solution {
public:
int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {
int currentStation=0;
int totalGas=0;
int curentTank=0;
for(int i=0;i<gas.size();i++)
{
totalGas+=gas[i]-cost[i];
curentTank+=gas[i]-cost[i];
if(curentTank<0)
{
curentTank=0;
currentStation=i+1;
}
}
return totalGas>=0? currentStation:-1;
}
};
运行效果:
相同思路Python代码如下:
class Solution:
def canCompleteCircuit(self, gas: List[int], cost: List[int]) -> int:
firstId,sumGas,totalGas=0,0,0
for i in range(len(gas)):
sumGas+=gas[i]-cost[i]
totalGas+=gas[i]-cost[i]
if(sumGas<0):
firstId=i+1
sumGas=0
return firstId if totalGas>=0 else -1
运行效果:
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/gas-station