思路
聯想貪心算法,遍歷兩次數組,一次是從左到右遍歷,只比較右邊孩子評分比左邊打的情況。第二次從右到左遍歷,只比較左邊孩子評分比右邊大的情況。最后求和即可
class Solution:def candy(self, ratings: List[int]) -> int:candys=[1]*len(ratings)for i in range(1,len(ratings)):if ratings[i]>ratings[i-1]:candys[i]=candys[i-1]+1##這確保了每個評分比左邊高的孩子拿得比左邊多。但這一輪并不能保證 “比右邊高的孩子也分得更多”,所以還需要第二輪處理。 #上面是考慮左邊比右邊大的for i in range(len(ratings)-2,-1,-1):if ratings[i]>ratings[i+1]:candys[i]=max(candys[i],candys[i+1]+1)result=0for i in range(len(candys)):result+=candys[i]return result