134.Gas Station

題目連接ide

題目大意:一個circle圓環,第i個位置,有汽油gas[i],而汽車從i到i+1,須要汽油cost[i]。求解,從哪一個位置開始,汽車能走完圓環。若是走不完則返回-1,能走完則返回index。例子以下:spa

法一:兩個for循環。直接求解每一個可能的起始位置,而後計算可否在有汽油的狀況下,走徹底環。o(n^2)。超時了。代碼以下:code

 1     public int canComplete(int[] gas, int[] cost) {
 2         int len = gas.length;
 3         int cnt = 0;
 4         int flag = 0;
 5         //逐一遍歷每一種可能
 6         for(int i = 0; i < len; i++) {
 7             flag = 0;
 8             //對於每個可能起始點,都計算一下circle可否完成汽車行駛任務
 9             for(int j = i; j < len; j++) {
10                 cnt += gas[j] - cost[j];
11                 if(cnt < 0 ) {
12                     cnt = 0;
13                     flag = -1;
14                     break;
15                 }
16             }
17             if(flag == -1) {
18                 continue;
19             }
20             for(int j = 0; j < i; j++) {
21                 cnt += gas[j] - cost[j];
22                 if(cnt < 0) {
23                     cnt = 0;
24                     flag = -1;
25                     break;
26                 }
27             }
28             if(flag == 0) {
29                 return i;
30             }
31         }
32         return -1;
33     }
View Code

法二(借鑑):貪心。待證實。具體見代碼(耗時1ms):blog

 1     public int canComplete(int[] gas, int[] cost) {
 2         int gas_cnt = 0, cost_cnt = 0;
 3         int index = 0, cnt = 0;
 4         for(int i = 0; i < gas.length; i++) {
 5             //統計全部汽油數量
 6             gas_cnt += gas[i];
 7             //統計汽車行駛花費的全部汽油數量
 8             cost_cnt += cost[i];
 9             //統計到目前爲止,汽油數量可否支撐汽車行駛
10             cnt += gas[i] - cost[i];
11             //若是一旦行駛不了,則從當前位置的下一個位置做爲起始點
12             //緣由:因爲到如今都行駛不了,若是選擇這個位置以前的任何一個位置做爲起始點,汽油數量只會更少
13             //因爲若是汽油數量>=花費數量,則必定存在解,因此所找到的解必定符合要求。
14             if(cnt < 0) {
15                 cnt = 0;
16                 index = i + 1;
17             }
18         }
19         //若是汽油數量<花費數量,則必定不存在解。
20         if(gas_cnt < cost_cnt) {
21             return -1;
22         }
23         return index;
24     }
View Code
相關文章
相關標籤/搜索