LeetCode 845 Longest Mountain in Array 正向DP+反向DP
阿新 • • 發佈:2022-05-25
You may recall that an array arr
is a mountain array if and only if:
arr.length >= 3
- There exists some index
i
(0-indexed) with0 < i < arr.length - 1
such that:arr[0] < arr[1] < ... < arr[i - 1] < arr[i]
arr[i] > arr[i + 1] > ... > arr[arr.length - 1]
Given an integer array arr
0
if there is no mountain subarray.
Solution
注意到這是連續的序列,所以只需要正向反向遍歷更新一遍即可
點選檢視程式碼
class Solution { private: int dp1[10003], dp2[10003]; int ans=0; public: int longestMountain(vector<int>& arr) { int n = arr.size(); for(int i=n-2;i>=0;i--){ if(arr[i+1]<arr[i])dp1[i] = dp1[i+1]+1; } for(int i=1;i<n;i++){ if(arr[i-1]<arr[i]) dp2[i] = dp2[i-1]+1; if(dp2[i]&&dp1[i]) ans = max(ans, dp2[i]+dp1[i]-1+2); } return ans; } };