题目:
思路:
动态规划。
dp1[i]: 以a[i]为结尾元素的 从左到右的最长连续递增数组的长度
dp2[i]: 以a[i]为结尾元素的 从右到左的最长连续递增数组的长度
则所求即为 max(dp1[i]+dp2[i]-1) ,其中0<i<n-1
解答:
class Solution:
def longestMountain(self, A: List[int]) -> int:
n=len(A)
if n<3:
return 0
dp1=[1]*n
dp2=[1]*n
flag=0
for i in range(1,n-1):
if A[i]>A[i-1]:
dp1[i]=dp1[i-1]+1
for i in range(n-2,0,-1):
if A[i]>A[i+1]:
dp2[i]=dp2[i+1]+1
#maxd只要小于4就可
maxd=2
for i in range(n-1):
if dp1[i]>=2 and dp2[i]>=2 and dp1[i]+dp2[i]>maxd:
maxd=dp1[i]+dp2[i]
flag=1
if flag:
return maxd-1
else:
return 0