每日一题- day 13

42 阅读1分钟

1. 今日语录

多做题,找感觉。

2. 题目

分发糖果

leetcode.cn/problems/ca…

3. 思路

贪心算法

/**
 * @param {number[]} ratings
 * @return {number}
 */
const ratings = [1, 0, 2]
var candy = function (ratings) {
    let a = new Array(ratings.length).fill(1)
    for (let i = 1; i < ratings.length; i++) {
        // 右边 > 左边,右边 += 1
        if (ratings[i - 1] < ratings[i]) {
            a[i] = a[i - 1] + 1
        }
    }
    let res = 0;
    for (let i = ratings.length - 1; i > 0; i--) {
        // 左边 > 右边, 左边糖果要求更多,最少为a[i]+1
        if (ratings[i - 1] > ratings[i]) {
            a[i - 1] = Math.max(a[i - 1], a[i] + 1);
        }
        // 顺便统计当前值
        res += a[i - 1]
    }
    res += a[0];;
    return res
};

(function () {
    console.log(ratings, '最少需要', candy(ratings), '个糖果');
})();