134. 加油站
class Solution {
public:
int canCompleteCircuit(vector<int>& g, vector<int>& c) {
int n = g.size();
vector<int> h(n,0);
// h[i] -> gas change from i-1 -> i
h[0] = g[n-1] - c[n-1];
for (int i = 1 ; i < n ; i ++ ) {
h[i] = g[i-1]-c[i-1];
}
int start = 0;
int pos = start;
int csum = 0;
while (pos < start + n && start < n) {
csum += h[(1+pos)%n];
if (csum < 0) {
start = pos + 1;
csum = 0;
}
pos ++ ;
}
return start<n?start:-1;
}
};
贪心算法(方法一) 还挺巧妙的,我这个就是个最大子数组的算法