面试算法-97-加油站

题目

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

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

给定两个整数数组 gas 和 cost ,如果你可以按顺序绕环路行驶一周,则返回出发时加油站的编号,否则返回 -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 可为起始索引。

java 复制代码
class Solution {
    public int canCompleteCircuit(int[] gas, int[] cost) {
        int n = gas.length;
        for (int i = 0; i < n; i++) {
            int remain = 0;
            int j = 0;
            for (; j < n; j++) {
                int k = (i + j) % n;
                remain = remain + gas[k] - cost[k];
                if (remain < 0) {
                    break;
                }
            }
            if (j == n) {
                return i;
            } else {
                i = i + j;
            }
        }
        return -1;
    }
}
相关推荐
weixin_445402303 分钟前
模板元编程应用场景
开发语言·c++·算法
啊阿狸不会拉杆3 分钟前
《机器学习导论》第 1 章 - 引言
人工智能·python·算法·机器学习·ai·numpy·matplotlib
轻轻唱6 分钟前
2026专业PPT设计服务商推荐:TOP10深度评测与选择指南
大数据·人工智能·算法
s1hiyu6 分钟前
嵌入式C++低功耗设计
开发语言·c++·算法
fanstuck11 分钟前
从 0 到 1 构建企业智能体平台:openJiuwen 架构解析与智能客服工作流实战
大数据·人工智能·算法·架构·aigc
青桔柠薯片11 分钟前
数据结构:单向链表和双向链表
数据结构·算法·链表
2401_8414956414 分钟前
【LeetCode刷题】对称二叉树
数据结构·python·算法·leetcode·二叉树··递归
飞机和胖和黄21 分钟前
王道考研C语言第五周
c语言·考研·算法
市场部需要一个软件开发岗位35 分钟前
一个无人机平台+算法监督平台的离线部署指南
java·python·算法·bash·无人机·持续部署
ygklwyf38 分钟前
零基础薄纱树套树——高级数据结构的结合
算法·线段树·树状数组·树套树