第四十二天:力扣第134题,加油站
地址:leetcode-cn.com/problems/ga…
思路:和小于零,油必不够,大于零,油必够。先相加,遍历一下,找加到尾不为零的位置即可。
var canCompleteCircuit = function(gas, cost) {
let res = [];
let flag = -1;
let sum = 0;
let ser = 0;
for(let i = 0; i < gas.length; i++)
{
res[i] = gas[i] - cost[i];
}
if(res.reduce((prev, next, index, array) => prev + next) < 0)
{
return -1;
}
for(let i = 0; i < res.length; i++)
{
if(flag === -1 && res[i] > 0)
{
sum = res[i];
ser = i;
flag = 0;
}
else if(flag === 0)
{
sum += res[i];
}
if(sum < 0)
{
flag = -1;
}
}
return ser;
};
执行用时:84 ms, 在所有 JavaScript 提交中击败了75.81%的用户
内存消耗:39.4 MB, 在所有 JavaScript 提交中击败了8.27%的用户
若是在原数组上操作,内存消耗会少一点,再给cost一个null。
执行用时:80 ms, 在所有 JavaScript 提交中击败了87.67%的用户
内存消耗:38.1 MB, 在所有 JavaScript 提交中击败了36.33%的用户
哈哈哈哈哈,机智如我。