LeetCode 134. 加油站

在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i]升。

你有一辆油箱容量无限的的汽车,从第i个加油站开往第i+1个加油站需要消耗汽油 cost[i]升。你从其中的一个加油站出发,开始时油箱为空。

给定两个整数数组 gascost ,如果你可以按顺序绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1 。如果存在解,则 保证 它是 唯一 的。

示例 1:

复制代码
输入: gas = [1,2,3,4,5], cost = [3,4,5,1,2]
输出: 3
解释:
从 3 号加油站(索引为 3 处)出发,可获得 4 升汽油。此时油箱有 = 0 + 4 = 4 升汽油
开往 4 号加油站,此时油箱有 4 - 1 + 5 = 8 升汽油
开往 0 号加油站,此时油箱有 8 - 2 + 1 = 7 升汽油
开往 1 号加油站,此时油箱有 7 - 3 + 2 = 6 升汽油
开往 2 号加油站,此时油箱有 6 - 4 + 3 = 5 升汽油
开往 3 号加油站,你需要消耗 5 升汽油,正好足够你返回到 3 号加油站。
因此,3 可为起始索引。

示例 2:

复制代码
输入: gas = [2,3,4], cost = [3,4,3]
输出: -1
解释:
你不能从 0 号或 1 号加油站出发,因为没有足够的汽油可以让你行驶到下一个加油站。
我们从 2 号加油站出发,可以获得 4 升汽油。 此时油箱有 = 0 + 4 = 4 升汽油
开往 0 号加油站,此时油箱有 4 - 3 + 2 = 3 升汽油
开往 1 号加油站,此时油箱有 3 - 3 + 3 = 3 升汽油
你无法返回 2 号加油站,因为返程需要消耗 4 升汽油,但是你的油箱只有 3 升汽油。
因此,无论怎样,你都不可能绕环路行驶一周。

提示:

  • gas.length == n
  • cost.length == n
  • 1 <= n <=
  • 0 <= gas[i], cost[i] <=

思路:

本题采用贪心思路,由局部最优到全局最优。首先如果 gas 数组所有数之和 小于 cost 数组之和,则说明汽车不可能环路一周。其次如果在第 i 个加油站的油只有 gas[i] 升,汽车开到第 i 个加油站时自身剩余油量有 curSum 升,而从第 i 个加油站到第 i +1 个加油站需要油量 cost[i] 升,如果 gas[i] + curSum < cost[i] (即 gas[i] - cost[i] +curSum < 0),则说明汽车从 第 i 个加油站及 以前的加油站出发都是行不通的,因为必然会阻塞在 从第 i 个加油站 到 第 i +1 个加油站的路途中。所以只能从第 i+1及以后的加油站出发。

代码:

java 复制代码
class Solution {
    public int canCompleteCircuit(int[] gas, int[] cost) {
        int index =0;
        int curSum =0;
        int totalSum =0;
        for(int i=0;i<gas.length;i++){
            curSum += gas[i]-cost[i];
            totalSum += gas[i]-cost[i];
            if(curSum<0){
                index = (i+1)%gas.length;
                curSum = 0;
            }
        }
        if(totalSum<0)return -1;
        return index;
    }
}

参考:代码随想录

相关推荐
沐怡旸42 分钟前
【算法】【链表】328.奇偶链表--通俗讲解
算法·面试
掘金安东尼4 小时前
Amazon Lambda + API Gateway 实战,无服务器架构入门
算法·架构
码流之上5 小时前
【一看就会一写就废 指间算法】设计电子表格 —— 哈希表、字符串处理
javascript·算法
快手技术7 小时前
快手提出端到端生成式搜索框架 OneSearch,让搜索“一步到位”!
算法
CoovallyAIHub1 天前
中科大DSAI Lab团队多篇论文入选ICCV 2025,推动三维视觉与泛化感知技术突破
深度学习·算法·计算机视觉
NAGNIP1 天前
Serverless 架构下的大模型框架落地实践
算法·架构
moonlifesudo1 天前
半开区间和开区间的两个二分模版
算法
moonlifesudo1 天前
300:最长递增子序列
算法
CoovallyAIHub1 天前
港大&字节重磅发布DanceGRPO:突破视觉生成RLHF瓶颈,多项任务性能提升超180%!
深度学习·算法·计算机视觉
CoovallyAIHub1 天前
英伟达ViPE重磅发布!解决3D感知难题,SLAM+深度学习完美融合(附带数据集下载地址)
深度学习·算法·计算机视觉