模拟实现
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型vector
* @return int整型
*/
int longestmountain(vector<int>& nums) {
int n = nums.size();
vector<int> sm{}; //表示山脉顶点下标
int res = 0;
for (int i = 1; i < n - 1; i++) {
if (nums[i] > nums[i - 1] && nums[i] > nums[i + 1]) {
sm.push_back(i);
}
}
for (auto& smitem : sm) {
int left = smitem - 1; //所在顶点的最左边
int right = smitem + 1;//所在顶点的最右边
for (int i = left - 1; i >= 0; i--) {
if(nums[i] < nums[i + 1]) {
left--;
}else{
break;
}
}
for (int i = right + 1; i < n; i++) {
if(nums[i] < nums[i - 1]) {
right++;
}else{
break;
}
}
res = max(res, right - left + 1);
}
return res;
}
};