http://oj.leetcode.com/problems/gas-station/
最初的想法是 两次遍历,复杂度O(n2), 导致TLE不能通过测试。
复杂度为O(n)的DP方法如下。
class Solution {
public:
int canCompleteCircuit(vector
&gas, vector
&cost) {
int total = 0, sum = 0, index = -1;
for(int i = 0; i < gas.size(); i++) {
total += gas[i] - cost[i];
sum += gas[i] - cost[i];
if(sum < 0) {
sum = 0;
index = i;
}
}
return total > -1 ? index+1 : -1;
}
};