Advertisement

算法Candy分发糖果

阅读量:

1、题目介绍

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

2、题目分析

  • 每位孩子都会获得至少一颗糖果,则我们可以使用辅助数组来记录每个孩子的 candies 数量。
  • 相邻的孩子们(包括左右两边的孩子)都应满足评分较高的孩子获得较多的 candies。
  • 初始化辅助数组后,默认情况下每位孩子都持有 1 颗 candies。
  • 接下来我们从左往右依次遍历整个数组,在此过程中遇到比当前元素小的 left 邻座时(即 left neighbor),就给其赋予 current value + 1 的值。
  • 然后我们再从 right 往 left 再次遍历整个 array,在此过程中遇到比当前 element 小 right neighbor 时(即 right neighbor < current value),无需更改

全部评论 (0)

还没有任何评论哟~