解题思路:(C#)
通过遍历循环每一个位置为出发点,对于单个循环每次只要满足“剩余油量+加油量>=下一个路程”即为满足条件的出发点,否则就不满足,跳出循环,进行下一个位置的出发点的判断。
public class Solution {
public int CanCompleteCircuit(int[] gas, int[] cost) {
int len=cost.Length;
int res=-1;
for(int i=0;i<len;i++)
{
int sum=0;
int temp=0;
for(int j=i;j<len;j++)
{
if(gas[j]+sum>=cost[j])
{
sum+=gas[j]-cost[j];
}
else
{
temp=1;
break;
}
}
//若后半段不满足,则直接进入下一个循环
if(temp==1)
continue;
for(int j=0;j<=i;j++)
{
if(gas[j]+sum>=cost[j])
{
sum+=gas[j]-cost[j];
}
else
break;
if(j==i)
{
res=j;
temp=2;
break;
}
}
if(temp==2)
break;
}
return res;
}
}