有 N
个小孩站成一列。每个小孩有一个评级。给定数组 ratings
代表这些小孩的评级。
现在你需要按照以下要求,给小孩们分糖果:
-
每个小孩至少得到一颗糖果。
-
评级越高的小孩可以比他相邻的两个小孩得到更多的糖果。
你最少要准备多少糖果?
class Solution: def candy(self, ratings): s = [1] * len(ratings) for i in range(1, len(ratings)): if ratings[i] > ratings[i - 1]: s[i] = s[i - 1] + 1 j = i while ratings[j] < ratings[j - 1] and s[j - 1] == s[j] and j > 0: s[j - 1] += 1 j -= 1 return sum(s)