摘要:這樣我們開始遍歷數組,如果是負數,說明開出該加油站后無法到達下一個加油站,這樣旅程的起點更新為下一個加油站。
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.
時間 O(N) 空間 O(K)
思路我們把將gas中每個值都減去cost中對應的值,這樣gas就成為了開出該加油站到下一個加油站時,該加油站加的油用剩到多少。這樣我們用一個tank變量記錄汽車每開到一個加油站后油箱里累計剩下多少油,每到一個加油站就更新。這樣我們開始遍歷gas數組,如果tank是負數,說明開出該加油站后無法到達下一個加油站,這樣旅程的起點更新為下一個加油站。因為旅程是環狀的我們遍歷的加油站數組應為2*gas.length-1,這樣能保證我們以最后一個加油站為起點時也能繼續驗證。
代碼public class Solution { public int canCompleteCircuit(int[] gas, int[] cost) { // gas減去cost,得到凈油值 for(int i = 0; i < cost.length; i++){ gas[i] -= cost[i]; } int tank = 0, res = -1; for(int i = 0; i < gas.length * 2 - 1; i++){ int idx = i % gas.length; // 更新油箱 tank += gas[idx]; // 如果油箱為負,說明走不到下一個加油站 if(tank < 0){ res = idx + 1; tank = 0; } } // 如果起點在最后一個加油站之后,說明無解 return res >= gas.length ? -1 : res; } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/64649.html
摘要:看到這個題目,怎樣可以不把它當成一個環路來分析,以及減少多余的空間呢例如,我們引入單次剩余油量,剩余油量和,總剩余油量和,以及可行起點四個參數。大體上說,只要,一定有解。所以跳過這個耗油量很大的油站,然后將下一個油站作為起點繼續判斷即可。 Problem There are N gas stations along a circular route, where the amount ...
摘要:先實現棧操作遍歷鏈表,把每個節點都進中然后再遍歷鏈表,同時節點依次出棧,二者進行比較。 ?作者簡介:大家好,我是車神哥,府學路18號的車神? ?個人主頁:應無...
摘要:關于遞歸這里提一兩點遞歸基本有這幾步遞歸的模板,終止條件,遞歸調用,邏輯處理。 ?作者簡介:大家好,我是車神哥,府學路18號的車神? ?個人主頁:應無所住而生...
摘要:有效二叉搜索樹定義如下節點的左子樹只包含小于當前節點的數。所有左子樹和右子樹自身必須也是二叉搜索樹。而我們二叉搜索樹保證了左子樹的節點的值均小于根節點的值,根節點的值均小于右子樹的值,因此中序遍歷以后得到的序列一定是升序序列。 ...
閱讀 1600·2021-11-16 11:44
閱讀 7498·2021-09-22 15:00
閱讀 4533·2021-09-02 10:20
閱讀 1963·2021-08-27 16:20
閱讀 2402·2019-08-26 14:00
閱讀 2916·2019-08-26 11:44
閱讀 1648·2019-08-23 18:33
閱讀 1880·2019-08-22 17:28