算法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)
还没有任何评论哟~
