1. 程式人生 > 實用技巧 >leetcode 17:gas-station

leetcode 17:gas-station

題目描述

環形路上有n個加油站,第i個加油站的汽油量是gas[i]. 你有一輛車,車的油箱可以無限裝汽油。從加油站i走到下一個加油站(i+1)花費的油量是cost[i],你從一個加油站出發,剛開始的時候油箱裡面沒有汽油。 求從哪個加油站出發可以在環形路上走一圈。返回加油站的下標,如果沒有答案的話返回-1。 注意: 答案保證唯一。 題目分析: 如果加的油和消耗的油總量小於0,無論怎麼走都沒法走完環形路。如果走路的前幾步消耗和加的油小於0,則也不能繼續到達下一個站點,則加油站的下標肯定為下一個站點。必須滿足以上兩個條件才可以: 程式碼如下:
 1 int canCompleteCircuit(vector<int
>& gas, vector<int>& cost) { 2 int index = -1; 3 int sum = 0,total = 0; 4 for(int i = 0;i<gas.size();i++) 5 { 6 sum +=gas[i] - cost[i]; 7 total +=gas[i] - cost[i]; 8 if(sum < 0) 9 { 10 sum = 0
; 11 index = i; 12 } 13 } 14 return total >= 0?index + 1:-1; 15 }