每个小孩必须至少有一颗糖果,相邻的小孩分数高的必须比分数低的糖果多。
问最少分出去多少糖果?
进行两次遍历
第一次从前往后,如果后面的比前面的分数高就+1
第二次从后往前,前面的比后面的分数高就+1
class Solution:
def candy(self, ratings: List[int]) -> int:
candies=[1]*len(ratings)
for i in range(1,len(ratings)):
if ratings[i]>ratings[i-1]:
candies[i]=candies[i-1]+1
for i in range(len(ratings)-2,-1,-1):
if ratings[i]>ratings[i+1]:
candies[i]=max(candies[i],candies[i+1]+1)
return sum(candies)