题解 | #分糖果问题#
分糖果问题
https://www.nowcoder.com/practice/76039109dd0b47e994c08d8319faa352
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # 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
贪心策略,左规则和右规则都要满足,然后循环判断,取左右规则中最大的加入到最终结果中作为需要的糖果数量