#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# pick candy
# @param arr int整型一维数组 the array
# @return int整型
#
class Solution:
    def candy(self , arr: List[int]) -> int:
        # write code here
        
        n = len(arr)
        ans = [0] * n
        ans[0] = 1
        for i in range(1,n):
            if arr[i] > arr[i-1]:
                ans[i] = ans[i-1] + 1
            else:
                ans[i] = 1
        
        right = 0
        ret = 0

        for j in range(n-1,-1,-1):
            if j < n-1 and arr[j] > arr[j+1]:
                right += 1
            else:
                right = 1
            ret += max(right,ans[j])
        return ret

贪心策略,左规则和右规则都要满足,然后循环判断,取左右规则中最大的加入到最终结果中作为需要的糖果数量