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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章