-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLeetcode第134题.cpp
More file actions
30 lines (30 loc) · 1.07 KB
/
Leetcode第134题.cpp
File metadata and controls
30 lines (30 loc) · 1.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
class Solution {
public:
int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {
int Gas=0,Cost=0;//初始化油量和消耗
for(int i=0;i<gas.size();++i)
{
Gas+=gas[i];
Cost+=cost[i];
}
if(Gas<Cost){
return -1; //如果总油量小于总消耗,则汽车一定到不了终点
}
vector<int> netcost;
for(int i=0;i<gas.size();++i)
{
netcost.push_back(gas[i]-cost[i]);
}
int ans=0,sum=0;
for(int i=0;i<netcost.size();++i)
{
sum+=netcost[i];
if( sum<0&&(i+1)<gas.size() ){ //如果剩余油量在某个点处跌到0以下,则这个点前面所有的加油站点都不可能是初始点
//因为剩余油量必然是正数,汽车才能往前走
ans=i+1; //不从跌到负数这个点开始是因为从这个点开始的剩余油量必然为负
sum=0;
}
}
return ans;
}
};