您的位置:首页 > 其它

leedcode做题总结,题目Gas Station-------- 2013/09/28

2014-07-21 18:08 896 查看
一段循环的路上有N个加油站,2个数组分别是每个加油站加油量和去下一个加油站的花费量。

一开始从每个节点开始历遍一圈,果断超时。

后来想了另一种方法,假设从点A开始,如果到点M油的积累量小于0了,则必然不会从0~M区间中开始,一位车到达区间中任何一点是油箱里都有剩油,在有剩油的情况下出发到M点都没油了更何况邮箱为空的情况下出发。

所以起点暂定为(M+1)%N,如果后面又出现积累量小于0的情况需要更新M。

全部历遍完了判断总的积累量是否大于等于0,是的话就说明可以跑完一圈。

public int canCompleteCircuit(int[] gas, int[] cost) {
int gas1=0;
int gas2=0;
int tmp=0;
for(int i=0;i<gas.length;i++){
gas1=gas1+gas[i]-cost[i];
gas2=gas2+gas[i]-cost[i];

if(gas1<0){
tmp=(i+1)%gas.length;
gas1=0;
}

}
if(gas2<0)return -1;
return tmp;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: