classSolution { public: intcanCompleteCircuit(vector<int>& gas, vector<int>& cost){ int total = 0, n = gas.size(), res = 0; for (int i = 0, sum = 0; i < n; ++i) { total += gas[i] - cost[i]; sum += gas[i] - cost[i]; if (sum < 0) { res = i + 1; sum = 0; } } return total < 0 ? -1 : res; } };
intcanCompleteCircuit(vector<int> &gas, vector<int> &cost){ // write your code here constint n = gas.size(); int sum = 0; for (int i = 0; i < n; ++i) { sum += (gas[i] - cost[i]); } if (sum < 0) { // sum < 0 means total gas < total cost, cannot complete return-1; }
sum = 0; for (int i = 0; i < n;) { int j = i; for (; j < n; ++j) { // start from i sum += (gas[j] - cost[j]); if (sum < 0) { break; } }
if (sum < 0) { sum = 0; i = j + 1; } else { return i; } } }