力扣每日一题Day15
过分谨慎的人难有成就。
题目描述:
n
个孩子站成一排。给你一个整数数组 ratings
表示每个孩子的评分。
你需要按照以下要求,给这些孩子分发糖果:
- 每个孩子至少分配到
1
个糖果。 - 相邻两个孩子评分更高的孩子会获得更多的糖果。
请你给每个孩子分发糖果,计算并返回需要准备的 最少糖果数目 。
解题代码:
1 | class Solution { |
解读与收获:
此题最终满足两个规则,从左到右遍历,每次比较两个孩子,保证如果右边的孩子比左边孩子分高,糖果也要多。从右到左遍历,保证左边的孩子分高,糖果比右边多。简称左规则和右规则。进行两次遍历,第一次遍历从左到右,将满足左规则的糖果分配存放在left数组中。再进行一遍右便利,满足将满足右规则的糖果分配存放到right。同时对比left[i]和right[i],取其中最大的数,这个数一定同时满足左右规则,累加到sum,最终得到糖果总数。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 驴の奇思妙想!
评论