第7题:134.Gas Station
题目大意:就是给定个数的加油站、站点的油储量、站点之间的耗油量,油箱不限,问从哪个站点出发可以走完全程。
题目分析:问题比较简单,油箱容量不限,所以问题就在于站点油量可否能够供给带下一个站点。即从第一个满足要求的站点出发,遍历,如果能够顺利走完则满足要求;否则,继续寻找下一个满足要求的初始站点,有则返回。直至搜索完毕。给出完整代码如下:
class Solution {
public:
int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {
int len_gas = gas.size();
int len_cost = cost.size();
if(len_gas != len_cost) return -1;
int sum1, sum2 = 0;
for(int i=0;i<len_gas;i++){
sum1+=gas[i];
sum2+=cost[i];
}
if(sum1 < sum2) return -1;
for(int index=0;index<len_gas;index++){
if(gas[index] < cost[index]) continue;
int tank = 0;
int cnt = 0;
for(int j=index;j<len_gas;j=(j+1)%len_gas){
tank = gas[j] - cost[j] + tank;
if(tank < 0) break;
cnt++;
if(cnt >= len_gas) return index;
}
}
return -1;
}
};
效果不是那么好,时间比较久。不过也AC了,所以就没有再写了。