前缀数组 由于山脉数组的定义为长度 >= 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