标签:
题目描述:在一个环形路上有n个加油站,每个加油站i 的油量为gas[i],你有一个无限大的油箱,从一个加油站i到下一个加油站i+1消耗油量cost[i],你从一个加油站开始,并且油箱没有油,如果能够绕环形路一圈,返回开始加油站的索引,否则返回-1.
分析:要保证能够行走一圈,则所有站的油量之和一定要大于行走一圈所消耗的油量。满足这个条件后,我们要找到出发位置,我们可以计算出每到达一个加油站后剩余的油量,如果我们以剩余油量最小的那个加油站为起点,由题意知道起点的剩余油量为0,则其他位置的剩余油量一定都大于0,即一定可以到达其他所有的加油站。代码如下:
1 int canCompleteCircuit(vector<int>& gas, vector<int>& cost) { 2 int index = 0, mid = 0, leftgas = 0; 3 int length = gas.size(); 4 for(int i = 1; i<=length;i++) 5 { 6 leftgas += gas[i-1] - cost[i-1]; 7 if(leftgas<mid) 8 { 9 index = i; 10 mid = leftgas; 11 } 12 } 13 return leftgas>=0?index:-1; 14 }
标签:
原文地址:http://www.cnblogs.com/zhulong890816/p/4660648.html