老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。
发布日期:2021-10-06 02:38:33 浏览次数:8 分类:技术文章

本文共 810 字,大约阅读时间需要 2 分钟。

老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。

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

  • 每个孩子至少分配到 1 个糖果。
  • 相邻的孩子中,评分高的孩子必须获得更多的糖果。

那么这样下来,老师至少需要准备多少颗糖果呢?

示例 1:

输入: [1,0,2]输出: 5解释: 你可以分别给这三个孩子分发 2、1、2 颗糖果。

示例 2:

输入: [1,2,2]输出: 4解释: 你可以分别给这三个孩子分发 1、2、1 颗糖果。     第三个孩子只得到 1 颗糖果,这已满足上述两个条件。

class Solution {

    public int candy(int[] ratings) {

        if(ratings == null) return 0;

        int len = ratings.length;

        int total = 0;

        int temp = 0;

        Map<Integer, Integer> map = new HashMap<>();

        map.put(0,1);

        for(int i = 1; i< len; i++ ){

            if(ratings[i-1] < ratings[i]){

                map.put(i, map.get(i-1)+1);

            }else{

                map.put(i, 1);

            }

        }

 

        for(int i =len - 2; i >= 0; i--){

            if(ratings[i] > ratings[i+1] && map.get(i) <= map.get(i+1)){

                map.put(i, map.get(i+1)+1);

            }

        }

        

        for(Map.Entry<Integer, Integer> entry: map.entrySet()){

            total += entry.getValue();

        }

 

        return total;

    }

}

 

 

转载地址:https://blog.csdn.net/luxuiary/article/details/106144247 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:给定一个二叉树,判断它是否是高度平衡的二叉树。
下一篇:Thread 和 Runnable 区别?

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年04月17日 22时50分37秒