题解 | #分糖果问题#
分糖果问题
https://www.nowcoder.com/practice/76039109dd0b47e994c08d8319faa352
寻找波峰问题,每个孩子的糖果数是其鞍点个数的最大值
建立两个数组一个left,一个right
左遍历获得每个点左边的鞍点数
右遍历寻找每个点右边鞍点数
取左右最大的一边,一加和就是结果
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # pick candy # @param arr int整型一维数组 the array # @return int整型 # class Solution: def candy(self , arr: List[int]) -> int: # write code here left=[1 for i in range(len(arr))] right=[1 for i in range(len(arr))] n=len(arr) ans=0 for i in range(1,n): if arr[i]>arr[i-1]: left[i]=left[i-1]+1 for j in range(n-2,-1,-1): if arr[j]>arr[j+1]: right[j]=right[j+1]+1 for i in range(n): ans+=max(left[i],right[i]) return ans