题目:
链接:https://leetcode-cn.com/problems/candy
老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。你需要按照以下要求,帮助老师给这些孩子分发糖果:每个孩子至少分配到 1 个糖果。相邻的孩子中,评分高的孩子必须获得更多的糖果。那么这样下来,老师至少需要准备多少颗糖果呢?示例 1:输入: [1,0,2]输出: 5解释: 你可以分别给这三个孩子分发 2、1、2 颗糖果。
答案:
时间:
30分钟未果,菜。
class Solution:def candy(self, ratings: List[int]) -> int:n=len(ratings)left=[1]*nright=[1]*nans=0for i in range(n-1):if ratings[i+1]>ratings[i]:left[i+1] =left[i]+1for i in range(n-1,0,-1):if ratings[i-1]>ratings[i]:right[i-1]=right[i]+1for i in range(n):ans+= max(left[i],right[i])return ans
要点:
1. 一般和相邻有关的都是贪心
曾经周赛两度相邻贪心(不过这是一年前了)
模拟赛
