题解 | #分糖果问题#

分糖果问题

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
        
                
            
                
                
            

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务