代码:
/**
* @param {number[]} gas
* @param {number[]} cost
* @return {number}
*/
var canCompleteCircuit = function(gas, cost) {
var arr = [];
var curSum = 0;
var positiveSum = 0;
var positiveIndex = 0;
var index = gas.length - 1;
gas.forEach((item, index) => {
arr.push(item - cost[index])
});
while (index >= 0) {
if (arr[index] < 0) {
curSum = arr[index--];
while (curSum < 0 && index >= 0) {
curSum += arr[index--];
}
if (index < 0) {
if (curSum + positiveSum >= 0) {
return positiveIndex
}
else {
return -1
}
}
else {
positiveSum += curSum;
positiveIndex = index + 1;
curSum = 0;
}
}
else {
while (arr[index] >= 0 && index >= 0) {
positiveSum += arr[index];
positiveIndex = index--;
}
if (index < 0) {
return 0
}
}
}
return -1
};