File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
#include<vector>
2+
#include<algorithm>
3+
#include<iostream>
4+
using namespace std;
5+
6+
class Solution {
7+
public:
8+
int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {
9+
const int N = gas.size();
10+
int j = 0;
11+
for (int i = 0; i < N; )
12+
{
13+
int remain = 0; // 记录当前总的油量
14+
for (j = 0; j < N; j++) // 向前走j个站点后到达站点k
15+
{
16+
int k = (i + j) % N; // 环形, 可能 i + j可能比较大
17+
remain += gas[k] - cost[k];
18+
if (remain < 0) break;
19+
}
20+
if (j == N) return i; // 恰好走了一圈
21+
i = i + j + 1; // 跳到下一个有可能的i 继续枚举
22+
}
23+
return -1;
24+
}
25+
};
26+
27+
// Test
28+
int main()
29+
{
30+
Solution sol;
31+
vector<int> gas = {1, 2, 3, 4, 5};
32+
vector<int> cost = {3, 4, 5, 1, 2};
33+
auto res = sol.canCompleteCircuit(gas, cost);
34+
cout << res << endl;
35+
36+
return 0;
37+
}

0 commit comments

Comments
 (0)