135. 分发糖果贪心算法

Posted yangbocsu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了135. 分发糖果贪心算法相关的知识,希望对你有一定的参考价值。

135. 分发糖果

一、题目

n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。

你需要按照以下要求,给这些孩子分发糖果:

每个孩子至少分配到 1 个糖果。
相邻两个孩子评分更高的孩子会获得更多的糖果。
请你给每个孩子分发糖果,计算并返回需要准备的 最少糖果数目 。

二、参考代码


class Solution 
    public int candy(int[] ratings) 

        int[] canday = new int[ratings.length];
        // 把所有孩子的糖果数初始化为 1;
        Arrays.fill(canday,1);

// 先从左往右遍历,如果右边孩子的评分比左边的高,则右边孩子的糖果数更新为左边孩子的糖果数加 1;

        for(int i = 1; i < canday.length ; i++)
            if(ratings[i-1] < ratings[i])
                canday[i] = canday[i-1]+1;
            
        
// 再从右往左遍历,如果左边孩子的评分比右边的高,且左边孩子当前的糖果数不大于右边孩子的糖果数,则左边孩子的糖果数更新为右边孩子的糖果数加 1。
        for(int i = canday.length - 1; i > 0; i--)
            if(ratings[i-1] > ratings[i])
                canday[i-1] = Math.max(canday[i-1],canday[i]+1);
            
            
        

        int ans = 0;
        for(int i = 0; i < canday.length; i++)
            ans += canday[i];
        
        return ans;

    

以上是关于135. 分发糖果贪心算法的主要内容,如果未能解决你的问题,请参考以下文章

135. 分发糖果(困难)-贪心

贪心算法——leetcode135.分发糖果

贪心算法:分发糖果

Leetcode No.135 分发糖果(贪心)

Leetcode No.135 分发糖果(贪心)

leetcode(135)分发糖果