Skip to content

📚 9.分发糖果

💻 代码实现

typescript
/**
 * @url https://leetcode.cn/problems/candy/description/
 */

// notice:先考虑一遍,然后再进行整合
function candy(ratings: number[]): number {
  const res = new Array(ratings.length).fill(1);
  // 确定右孩子比左孩子大的情况
  for (let i = 1; i < ratings.length; i++) {
    if (ratings[i] > ratings[i - 1]) {
      res[i] = res[i - 1] + 1;
    }
  }
  console.log("res", res);

  // 确定左孩子比右孩子大,倒序遍历,因为要用到后面先比较的结果
  for (let i = ratings.length - 2; i >= 0; i--) {
    if (ratings[i] > ratings[i + 1]) {
      res[i] = Math.max(res[i], res[i + 1] + 1);
    }
  }
  console.log(res);

  return res.reduce((acc, cur) => acc + cur, 0);
}
candy([1, 0, 2]);

Released under the MIT License.