暴力搜索直接跪了。
转为贪心算法,因为是一个圈,所以可以把所有的花费和储备加起来,如果小于0。说明肯定没有解。
class Solution {
public:
int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {
if(gas.size() == 0) return -1;
int sum = 0;
for(int i = 0;i<gas.size();i++)
{
sum = sum + gas[i];
sum = sum - cost[i];
}
if(sum < 0) return -1;
sum = 0;
int ret = 0;
for(int i = 0;i<gas.size();i++)
{
sum = sum + gas[i];
sum = sum - cost[i];
if(sum < 0)
{
sum = 0;
ret = i+1;
}
}
return ret ;
}
};