问题:
来源:leetcode
思路:
紫书上遇到过这个题,计算每一处的净剩余值,问题转化为走一圈不遇到负数值即可,
那么从一个上一个数是负数的位置走,能否直接判断这一种结果?
不能。
当然有1次遍历的方法,不够了,往前找嘛!(就提示到这里)
代码:
vector<int> gas;
vector<int> cost;
int A[gas.size()];
for(int i=0;i<gas.size();i++)
{
A[i]=gas[i]-cost[i];
}
int j=gas.size()-1;
int begin=0;
int r=0;
for(int i=0;i<=j;i++)
{
r=r+A[i];
while(r<0)
{
if(j<i) {
return -1;
}
r=r+A[j];
begin=j;
j--;
}
}
return begin;
评价:
自己这个代码感觉写的还可以