Gas Station
MediumArrayGreedy
Solution
import { range } from '@algorithm/lib';
export function canCompleteCircuit(gases: number[], costs: number[]): number {
const n = gases.length;
const totalRemain = gases.reduce((total, gas, i) => total + gas - costs[i], 0);
if (totalRemain < 0) {
return -1;
}
let [answer, remain] = [0, 0];
for (const i of range(n)) {
if (remain < 0) {
remain = 0;
answer = i;
}
remain += gases[i] - costs[i];
}
return answer;
}