187. 加油站
在一条环路上有 N 个加油站,其中第 i 个加油站有汽油gas[i],并且从第_i_个加油站前往第_i_+1个加油站需要消耗汽油cost[i]。
你有一辆油箱容量无限大的汽车,现在要从某一个加油站出发绕环路一周,一开始油箱为空。
求可环绕环路一周时出发的加油站的编号,若不存在环绕一周的方案,则返回-1。
样例
样例 1:
输入:gas[i]=[1,1,3,1],cost[i]=[2,2,1,1]
输出:2
样例 2:
输入:gas[i]=[1,1,3,1],cost[i]=[2,2,10,1]
输出:-1
挑战
O(n)时间和O(1)额外空间
注意事项
数据保证答案唯一。
int canCompleteCircuit(vector<int> &gas, vector<int> &cost) {
// write your code here
int size = gas.size();
bool success = false;
int start = -1;
for(int i=0;i< size; i++)
{
start = i;
int count=0;
int sum = 0;
int j = i;
while(count < size)
{
sum += gas[j];
sum -= cost[j];
if(sum < 0)
{
break;
}
j = (j+1) % size;
count++;
}
if(sum >= 0)
{
return start;
}
}
return -1;
}