由于增加是有最优化的1,而减少趋向无穷;分成两个小问题,第一步顺序遍历arr数组,如果要求递增,则ans数组下一个比当前大1.第二步逆序遍历arr数组,如果要求递增且ans数组不符合要求,则ans数组上一个比当前大1.
用例通过率: 100.00% 运行时间: 987ms 占用内存: 16832KB。

#
# pick candy
# @param arr int整型一维数组 the array
# @return int整型
#
class Solution:
    def candy(self, arr):
        ans = [1]*len(arr)
        for i in range(0, len(arr)-1):
            if arr[i+1] > arr[i]:
                ans[i+1] = ans[i]+1
        for i in range(1, len(arr)):
            if arr[-i-1] > arr[-i] and ans[-i-1] <= ans[-i]:
                ans[-i-1] = ans[-i]+1
        return sum(ans)