`

LeetCode 134 - Gas Station

 
阅读更多

There are N gas stations along a circular route, where the amount of gas at station i is gas[i].

You have a car with an unlimited gas tank and it costs cost[i] of gas to travel from station i to its next station (i+1). You begin the journey with an empty tank at one of the gas stations.

Return the starting gas station's index if you can travel around the circuit once, otherwise return -1.

Note:
The solution is guaranteed to be unique.

 

Solution:

Let xi be the amount of gas available at station i minus the amount of gas required to go to next station.

A requirement is Σ xi ≥ 0 (enough gas to complete a full circle).

Consider Si = x1 + x2 + ... + xi

Note that Sn ≥ 0.

Now pick the smallest (or even largest will do, making it easier to write code for) k such that Sk is the least and start at the station next to it.

Now for k < j ≤ n, we have the gas in tank = Sj - Sk ≥ 0.

for 1 ≤ j ≤ k, we have gas in tank = xk+1 + .. + xn + x1 + x2 + .. + xj = Sn - Sk + Sj ≥ 0.

Thus starting at k+1 will ensure there is enough gas accumulated at each station to get to the next station.

 

// gas[i] is the gas at station i, cost[i] is the cost from station i to (i+1)%n
public int canCompleteCircuit(int[] gas, int[] cost) {
    int n = gas.length;
    int minS = Integer.MAX_VALUE, S = 0, pos = 0;
    for(int i=0; i<n; i++) {
        S += gas[i] - cost[i];
        if(S < minS) {
            minS = S;
            pos = (i+1) % n; // i+1==n ? 0 : i+1;
        }
    }
    return S>=0 ? pos : -1;
}

 

分享到:
评论

相关推荐

    js-leetcode题解之134-gas-station.js

    javascript js_leetcode题解之134-gas-station.js

    python-leetcode题解之134-Gas-Station

    python python_leetcode题解之134_Gas_Station

    java-leetcode题解之Gas Station.java

    java java_leetcode题解之Gas Station.java

    gasstationleetcode-leetcode-java:leetcode-java

    - GasStation.java: "加油站"问题的Java实现 - OtherProblems/ - Problem1.java: 其他问题的Java实现 - Problem2.java - ... - tests/ - GasStationTest.java: 对"加油站"问题的测试用例 - ...

    gasstationleetcode-leetcode-in-niuke:在牛客网上的在线编程中的leetcode在线编程题解

    gas ...gas-station 动态规划 palindrome-partitioning-ii 动态规划 triangle 树 sum-root-to-leaf-numbers 动态规划 distinct-subsequences 递归 valid-palindrome 模拟 pascals-triangle 模拟 pasca

    leetcode-cpp刷题

    - **2.1.21 Gas Station** - 汽油站问题,找到可以从头到尾循环的起始站点。 - 实现思路:累积差值法。 - **2.1.22 Candy** - 分发糖果问题,确保相邻的孩子获得的糖果数量不同。 - 实现思路:动态规划,先从...

    gasstationleetcode-LeetCode-:坚持每天刷一道算法题,冲鸭!!!

    gas station leetcode LeetCode- 坚持每天刷一道算法题,冲鸭!!! day1 验证回文字符串 day2 亲密字符串 柠檬水找零 day3 反转字符串中的单词 day4 三数之和 day5 数组中的第k个最大元素 day6 环形链表II day7 无...

    gasstationleetcode-gas-station:加油站

    leetcode 加油站 实施:蛮力 O(N ^ 2) class Solution { public int canCompleteCircuit ( int [] gas , int [] cost ) { for ( int i = 0 ; i &lt; gas . length; i ++ ) { int current_stop = i; int count = 0 ; ...

    gasstationleetcode-leetcode:简单纪录每日一题

    gas station leetcode 非官方顺序leetcode题解,主要代码为Python和C++。 leetcode 第1题: leetcode 第2题: leetcode 第3题: leetcode 第4题: leetcode 第5题: leetcode 第6题: leetcode 第7题: leetcode 第9...

    gasstationleetcode-LeetCode_Practice:我的LeetCode练习从2020年开始

    134_Gas_Station 118_Pascal's_Triangle_I 119_Pascal's_Triangle_II 169_Majority_Element 229_Majority_Element_II 274_H_索引 275_H_Index_II 217_Contain_Duplicate 55_Jump_Game 45_Jump_Game_II 121_Best_Time...

    gasstationleetcode-leetcode_c:leetcode一些题目的C语言解答

    这道题,题目名字就叫gas-station(网址的最后一部分),于是此题目的代码也在gas-station.c文件中。 当一道题通过测试且性能达到预期时,将在git中commit,注释为“测试通过,性能达标”。若commit的注释为其它内容...

    gasstationleetcode-leetcode-[removed]unsad用javascript编写的leetcode解决方案

    gas station leetcode Leetcode solutions written in Javascript 分类标准 重点:必须掌握的题型。通常都有着代表一类题型的解法,或者可以举一反三。 提高:难度相对高的题,或者思路巧妙的题,提升自我的目的可以...

    Leetcode题目+解析+思路+答案.pdf

    - **Gas Station**:寻找最短的加油路线。 - **Candy**:分糖果,确保每个孩子至少得到一块糖,尽可能公平。 - **Word Break**:判断一个字符串是否可以拆分为一个词汇表中的单词序列。 7. **链表(Linked List...

    gasstationleetcode-leetcode:LeetcodeOJ解决方案

    leetcode 【演示记录】 报告 展示 2017/03/06 1.二和,167.二和二 2107/03/06 15.3 总和,16.3 总和最近,18.4 总和,11.最多水的容器 2017/03/09 62.Unique Paths, 63.Unique Paths II, 64.Minimum Path Sum 2017/...

    gasstationleetcode-Leetcode:力码

    station(134)。 swift Leetcode\group anagrams(49).swift Leetcode\group 给定他们所属的组大小的人(1282).swift Leetcode\数组中的第k 个最大元素(215).swift Leetcode\最长递增子序列(300).swift Leetcode\ma

    gasstationleetcode-leetcode:leetcode

    gas station leetcode 什么是LeetCode? 官网(中文): 官网(英文): LeetCode是一个在线算法编程网站,上面主要收集了各大IT公司的笔试面试题,对于找工作是一个不可多得的好帮手。 (Notes: Last updated table:...

    gasstationleetcode-LeetCode:Leetcode问题解决方案

    在LeetCode平台上,题目“Gas Station”是一道著名的算法问题,属于中等难度。这个问题旨在测试程序员对于数组处理、线性搜索以及优化算法的理解。在这个压缩包文件"gasstationleetcode-LeetCode:LeetCode问题解决...

    LeetCode leetcode部分题解答代码实现

    * Gas Station:给定一个数组,返回可以到达的加油站数量。这个题目需要使用贪心算法的思想,将数组分解成更小的子数组,并统计可以到达的加油站数量。 7. 链表 链表是一种非常重要的数据结构,LeetCode 中有很多...

    gasstationleetcode-LeetCode:LeetCode中的各种算法主题

    "gasstation"题目是其中的一个经典问题,它涉及到数组、数学和贪心策略等概念。LeetCode上的问题通常涵盖多种算法主题,如链表操作、二分查找、两个指针技巧等,这些都是计算机科学和编程的基础。 1. **加油站问题...

Global site tag (gtag.js) - Google Analytics