前缀数组 由于山脉数组的定义为长度 >= 3 且 nums[0] < nums[1] < ... < nums[i], nums[i] > nums[i + 1] ... > nums[i + k] 则设置左右数组,遍历获取其符合山脉条件的长度,最终山脉的最长值为左右数组中符合条件的最大值

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param nums int整型一维数组 
# @return int整型
#
class Solution:
    def longestmountain(self , nums: List[int]) -> int:
        # write code here
        if not nums or len(nums) < 3:
            return 0
        n = len(nums)
        l, r = [0 for _ in range(n)], [0 for _ in range(n)]
        for i in range(1, n):
            if nums[i] > nums[i - 1]:
                l[i] = l[i - 1] + 1
        for i in range(n - 2, -1, -1):
            if nums[i] > nums[i + 1]:
                r[i] = r[i + 1] + 1
        res = 0
        for i in range(n):
            if l[i] and r[i]:
                res = max(res, l[i] + r[i] + 1)
        return res