在算法的世界里,有许多有趣且富有挑战性的问题,今天我们就来探讨一个经典的题目 —— 分发糖果问题。这个问题不仅考验我们的逻辑思维,还能让我们深入理解贪心算法的精妙之处。
一、问题描述
有 n
个孩子站成一排,我们已知一个整数数组 ratings
表示每个孩子的评分。任务是按照以下规则给这些孩子分发糖果:
- 每个孩子至少分配到 1 个糖果。
- 相邻两个孩子中,评分更高的孩子会获得更多的糖果。
最终我们需要计算并返回满足这些条件所需准备的最少糖果数目。
二、示例分析
为了更好地理解问题,我们来看几个示例:
- 示例 1:
输入:ratings = [1, 0, 2]
输出:5
解释:在这里,我们可以分别给第一个、第二个、第三个孩子分发2
、1
、2
颗糖果。这样,既满足每个孩子至少有 1 颗糖果,又保证了评分高的孩子糖果更多。 - 示例 2:
输入:ratings = [1, 2, 2]
输出:4
解释:我们可以分别给第一个、第二个、第三个孩子分发1
、2
、1
颗糖果。第三个孩子虽然和第二个孩子评分相同,但根据规则也能得到 1 颗糖果,满足