面试经典-24-加油站

题目

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

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

给定两个整数数组 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 j = 0;
            int remain = 0;
            while (j < n) {
                remain = remain + gas[(i + j) % n] - cost[(i + j) % n];
                if (remain < 0) {
                    break;
                }
                j++;
            }
            if (j == n) {
                return i;
            } else {
                i = i + j;
            }

        }
        return -1;
    }
}
相关推荐
七牛开发者31 分钟前
MCP 到底是什么?为什么 Agent 都想接上它
算法·aigc·agent
张元清4 小时前
React useIsomorphicLayoutEffect:修掉 SSR 下的 useLayoutEffect 警告(2026)
前端·javascript·面试
PBitW5 小时前
直接让GPT每日训练我!!!😕😕😕
前端·javascript·面试
以和为贵6 小时前
前端手写 RAG 踩坑实录:四个让检索"翻车"的坑
前端·人工智能·面试
假如让我当三天老蒯6 小时前
TypeScript 继续学习(学习用)
前端·面试·typescript
kisshyshy7 小时前
从递归到迭代,一文吃透二叉树的核心知识与 JavaScript 实现
javascript·算法·代码规范
To_OC18 小时前
LC 49 字母异位词分组:想到哈希表很简单,选对 key 才是精髓
javascript·算法·leetcode
SamDeepThinking1 天前
高并发场景下,CompletableFuture与ForkJoinPool该如何取舍?
java·后端·面试
用户938515635071 天前
从 O(n²) 到 O(nlogn):一文读懂快速排序的“快”与“妙”
javascript·算法