码迷,mamicode.com
首页 > 其他好文 > 详细

Gas Station

时间:2014-09-11 23:37:12      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   io   os   ar   for   art   

      题意很清晰,每个加油站有一定的油,到下一个站需要消耗一定的油量,这个关系是固定的,这样我们就可以用一个数组来表示汽车到每个加油站以及接下来一段路程增加的油量,即gas[i]-cost[i];

      例如:gas   5 0 9 4 3

              cost   6 7 5 9 5

              seq    -1 -7 4 -5 -2

这就变成了一个最大连续子序列和的拓展问题,算法说明见链接http://blog.csdn.net/hcbbt/article/details/10454947

 1 class Solution {
 2 public:
 3     int canCompleteCircuit(vector<int> &gas, vector<int> &cost) {
 4         int gasLen = gas.size();
 5         int sum = -1;
 6         int index =-1;
 7         bool round = false;
 8         int cnt =0;
 9         if(gasLen == 0)
10             return -1;
11         for(int i=0;i<gasLen;i++)
12         {
13             gas[i] = gas[i]-cost[i];
14         }
15         for(int i=0;i<2*gasLen-1;i++)
16         {
17             if(sum<0)
18             {
19                if(i>=gasLen)
20                     break;
21                sum = gas[i];
22                index = i;
23                cnt = 1;
24             }
25             else
26             {
27                sum += gas[i%gasLen];
28                cnt++;
29             }
30             if(sum>=0&&cnt == gasLen)
31                 break;
32 
33         }
34         if(sum<0)
35             return -1;
36         return index;
37     }
38 };

 

Gas Station

标签:style   blog   http   color   io   os   ar   for   art   

原文地址:http://www.cnblogs.com/ZhangYushuang/p/3967418.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!