leetcode135. Candy

每个小孩必须至少有一颗糖果,相邻的小孩分数高的必须比分数低的糖果多。
问最少分出去多少糖果?
进行两次遍历
第一次从前往后,如果后面的比前面的分数高就+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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章