题解 | #最长山脉#
最长山脉
http://www.nowcoder.com/practice/f4e974a50eda429fbf36515a4197b148
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型vector * @return int整型 */ int longestmountain(vector<int>& nums) { // write code here int n=nums.size(); if(n<=2) return 0; vector<int>r(n); vector<int>l(n); l[0]=0; r[n-1]=0; for(int i=1;i<n;i++){ if(nums[i]>nums[i-1]){//i号元素前面连续递增的元素个数 l[i]=l[i-1]+1; } } for(int i=n-2;i>=0;i--){//i号元素后面连续递减的元素个数 if(nums[i]>nums[i+1]){ r[i]=r[i+1]+1; } } int res=0; for(int i=0;i<n;i++){ if(l[i]>0&&r[i]>0&&res<r[i]+l[i]+1){//寻找最长山脉 res=r[i]+l[i]+1; } } return res; } };