两次遍历;
相当于找连续递增子数组加一个判断;
具体代码:class Solution {
public:
int longestMountain(vector& arr) {
int n=arr.size();
vectordpa(n,1);
vectordpb(n,1);
for(int i=1;i
if(arr[i]>arr[i-1]){
dpa[i]=dpa[i-1]+1;
}
}
for(int i=n-2;i>=0;i--){
if(arr[i]>arr[i+1]){
dpb[i]=dpb[i+1]+1;
}
}
int ret=0;
for(int i=0;i
if(dpa[i]>1&&dpb[i]>1)
ret=max(dpa[i]+dpb[i]-1,ret);
}
return ret;
}
};



