我的js算法爬坑之旅- 加油站

216 阅读1分钟

第四十二天:力扣第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%的用户

哈哈哈哈哈,机智如我。