首页 > 其他 > 详细

Gas Station

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

      题意很清晰,每个加油站有一定的油,到下一个站需要消耗一定的油量,这个关系是固定的,这样我们就可以用一个数组来表示汽车到每个加油站以及接下来一段路程增加的油量,即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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!