Skip to content

分发糖果

js
// 老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。
// 你需要按照以下要求,帮助老师给这些孩子分发糖果:
// 每个孩子至少分配到 1 个糖果。
// 相邻的孩子中,评分高的孩子必须获得更多的糖果。
//
// 示例 1:
//
// 输入: [1,0,2]
// 输出: 5
// 解释: 你可以分别给这三个孩子分发 2、1、2 颗糖果。
// 示例 2:
//
// 输入: [1,2,2]
// 输出: 4

function fn(nums) {
    let count = new Array(nums.length).fill(1),res = 0
    for(let i = 1; i < nums.length; i ++){
        if(nums[i] > nums[i - 1]){
            count[i] = count[i - 1] + 1
        }
    }
    for(let i = nums.length - 2;i >= 0;i --){
        if(nums[i] > nums[i + 1]){
            count[i] = Math.max(count[i], count[i + 1] + 1)
        }
    }

    for (let i = 0; i < count.length; i ++){
        res += count[i]
    }
    return res
}

console.log(fn([1,0,2]))
console.log(fn([1,2,2]))
console.log(fn([1,2,2,5,4,3,2]))
// 老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。
// 你需要按照以下要求,帮助老师给这些孩子分发糖果:
// 每个孩子至少分配到 1 个糖果。
// 相邻的孩子中,评分高的孩子必须获得更多的糖果。
//
// 示例 1:
//
// 输入: [1,0,2]
// 输出: 5
// 解释: 你可以分别给这三个孩子分发 2、1、2 颗糖果。
// 示例 2:
//
// 输入: [1,2,2]
// 输出: 4

function fn(nums) {
    let count = new Array(nums.length).fill(1),res = 0
    for(let i = 1; i < nums.length; i ++){
        if(nums[i] > nums[i - 1]){
            count[i] = count[i - 1] + 1
        }
    }
    for(let i = nums.length - 2;i >= 0;i --){
        if(nums[i] > nums[i + 1]){
            count[i] = Math.max(count[i], count[i + 1] + 1)
        }
    }

    for (let i = 0; i < count.length; i ++){
        res += count[i]
    }
    return res
}

console.log(fn([1,0,2]))
console.log(fn([1,2,2]))
console.log(fn([1,2,2,5,4,3,2]))