LeetCode //134. Gas Station
发布人:shili8
发布时间:2024-12-29 04:24
阅读次数:0
**LeetCode134. Gas Station**
### 题目描述有一条长途的汽车路线,共有 N 个加油站。每个加油站都有一个汽油储量(gas)和一个汽油消耗量(cost)。汽车从第一个加油站出发,行驶到第二个加油站,然后再行驶到第三个加油站,以此类推。汽车的汽油箱容量为 C。如果汽车在某个加油站停留太久,汽油箱将会空了。
现在,我们需要找到一个加油站,使得从该加油站出发后,汽车可以一直行驶到最后一个加油站,并且不超过汽油箱的容量。换句话说,我们需要找到一个加油站,使得汽车在此加油站停留时,可以刚好补充足够的汽油,以便于汽车能够完成整个路线。
###问题要求给定一个加油站列表,包括每个加油站的汽油储量和汽油消耗量,以及汽车的汽油箱容量。我们需要找到一个加油站,使得从该加油站出发后,汽车可以一直行驶到最后一个加油站,并且不超过汽油箱的容量。
###代码实现
class Solution: def canCompleteCircuit(self, gas: List[int], cost: List[int]) -> int: # 计算总共有多少个加油站 n = len(gas) # 如果总共的汽油储量小于总共的汽油消耗量,则无法完成整个路线 if sum(gas) < sum(cost): return -1 # 初始化一个变量,用于记录当前剩余的汽油量 remain =0 # 初始化一个变量,用于记录最终结果 res =0 # 遍历每个加油站 for i in range(n): # 计算当前加油站的汽油储量与汽车的汽油消耗量之差 remain += gas[i] - cost[i] # 如果当前剩余的汽油量小于0,则需要从下一个加油站开始 if remain < 0: res = i +1 remain =0 # 返回最终结果 return res
###代码注释* `canCompleteCircuit`函数用于计算汽车可以行驶的路线。
* `gas`和`cost`是两个列表,分别表示每个加油站的汽油储量和汽油消耗量。
* `n`变量用于记录总共有多少个加油站。
* 如果总共的汽油储量小于总共的汽油消耗量,则无法完成整个路线。
* `remain`变量用于记录当前剩余的汽油量。
* `res`变量用于记录最终结果。
* 遍历每个加油站,计算当前加油站的汽油储量与汽车的汽油消耗量之差。
* 如果当前剩余的汽油量小于0,则需要从下一个加油站开始。
* 返回最终结果。
### 示例
# 测试用例1gas = [1,2,3,4,5] cost = [3,4,5,1,2] solution = Solution() print(solution.canCompleteCircuit(gas, cost)) # Output:3# 测试用例2gas = [2,3,4] cost = [3,4,3] solution = Solution() print(solution.canCompleteCircuit(gas, cost)) # Output: -1
### 总结本题目要求我们找到一个加油站,使得从该加油站出发后,汽车可以一直行驶到最后一个加油站,并且不超过汽油箱的容量。我们需要计算总共有多少个加油站,如果总共的汽油储量小于总共的汽油消耗量,则无法完成整个路线。然后,我们需要遍历每个加油站,计算当前加油站的汽油储量与汽车的汽油消耗量之差。如果当前剩余的汽油量小于0,则需要从下一个加油站开始。最后,我们返回最终结果。