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 in the clockwise direction, otherwise return -1.
Note:
- If there exists a?solution, it is guaranteed to be unique.
- Both input arrays are non-empty and have the same length.
- Each element in the input arrays is a non-negative integer.
Example 1:
Input: gas = [1,2,3,4,5] cost = [3,4,5,1,2]Output: 3Explanation: Start at station 3 (index 3) and fill up with 4 unit of gas. Your tank = 0 + 4 = 4 Travel to station 4. Your tank = 4 - 1 + 5 = 8 Travel to station 0. Your tank = 8 - 2 + 1 = 7 Travel to station 1. Your tank = 7 - 3 + 2 = 6 Travel to station 2. Your tank = 6 - 4 + 3 = 5 Travel to station 3. The cost is 5. Your gas is just enough to travel back to station 3. Therefore, return 3 as the starting index.Example 2:
Input: gas = [2,3,4] cost = [3,4,3]Output: -1Explanation: You can't start at station 0 or 1, as there is not enough gas to travel to the next station. Let's start at station 2 and fill up with 4 unit of gas. Your tank = 0 + 4 = 4 Travel to station 0. Your tank = 4 - 3 + 2 = 3 Travel to station 1. Your tank = 3 - 3 + 3 = 3 You cannot travel back to station 2, as it requires 4 unit of gas but you only have 3. Therefore, you can't travel around the circuit once no matter where you start.?[暴力解法]:
時間分析:
空間分析:
?[優化后]:
時間分析:
空間分析:
[奇葩輸出條件]:
[奇葩corner case]:
[思維問題]:
不知道怎么表示:天啦嚕,多開幾個變量還沒學會么?
[英文數據結構或算法,為什么不用別的數據結構或算法]:
[一句話思路]:
tank就一直+=就行了,就可以不必清空?
[輸入量]:空:?正常情況:特大:特小:程序里處理到的特殊情況:異常情況(不合法不合理的輸入):
[畫圖]:
[一刷]:
[二刷]:
[三刷]:
[四刷]:
[五刷]:
? [五分鐘肉眼debug的結果]:
[總結]:
tank就一直+=就行了,就可以不必清空。不符合條件的時候才清空。
[復雜度]:Time complexity: O(n) Space complexity: O(1)
[算法思想:迭代/遞歸/分治/貪心]:
[關鍵模板化代碼]:
[其他解法]:
[Follow Up]:
[LC給出的題目變變變]:
?[代碼風格] :
?[是否頭一次寫此類driver funcion的代碼] :
?[潛臺詞] :
?
// package whatever; // don't place package name!class Solution {public int canCompleteCircuit(int[] gas, int[] cost) {//corner caseif (gas == null || cost == null) return -1; //initializationint sumGas = 0;int sumCost = 0;int tank = 0;int start = 0;//for loop and renew the startfor (int i = 0; i < gas.length; i++) {sumGas += gas[i];sumCost += cost[i];tank += gas[i] - cost[i];//if tank < 0, renew startif (tank < 0) {start = i + 1;tank = 0;}}//if sumgas > sumcost, return start. if (sumGas >= sumCost) return start;return -1;} } /* gas = [1, 2, 3, 4, 5] cost = [3, 4, 5, 1, 2] i 0 1 2 3 4 sumgas 1 3 6 10 15 sumcost 3 7 12 13 15 tank -2 3 6*/ View Code?
轉載于:https://www.cnblogs.com/immiao0319/p/9449748.html
總結
以上是生活随笔為你收集整理的134. Gas Station加油站的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ==与equal在java中应用的感悟
- 下一篇: 程序员的业余项目