我的js算法爬坑之旅-分发糖果

104 阅读1分钟

第七十八天:力扣135题,分发糖果

地址:leetcode-cn.com/problems/ca…

思路:两次遍历,保证左右都是,只要大就大一位

var candy = function(ratings) {
  const n = ratings.length;
  let res = new Array(n).fill(1);
  for(let i = 1; i < n; i++)
  {
    if(ratings[i] > ratings[i - 1])
    {
      res[i] = res[i - 1] + 1;
    }
  }
  for(let i = n - 2; i >= 0; i--)
  {
    if(ratings[i] > ratings[i + 1])
    {
      if(res[i] <= res[i + 1])
      {
        res[i] = res[i + 1] + 1;
      }
    }
  }
  var sum =0;
  res.forEach(function(value,index,array){
    sum+=value; 
  });
  return sum;
};

执行用时:96 ms, 在所有 JavaScript 提交中击败了72.20%的用户

内存消耗:41.3 MB, 在所有 JavaScript 提交中击败了90.24%的用户