Original title
Code implementation (first brush self-solving)
class Solution {
public:
int minimumMountainRemovals(vector<int>& nums) {
int strl = nums.size(),max_mountain = -1;
vector<int> dpup(strl,0),dpdown(dpup);
for(int i=0;i<strl;++i)
{
dpup[i] = 1;
for(int j=i-1;j>=0;--j)
{
if(nums[i] < nums[j])
{
if(dpup[j]>=2)
dpdown[i] = max(dpup[j]+1,dpdown[i]);
if(dpdown[j]>=3)
dpdown[i] = max(dpdown[j]+1,dpdown[i]);
}
if(nums[i] > nums[j])
dpup[i] = max(dpup[j]+1,dpup[i]);
if(dpdown[i] > max_mountain)
max_mountain = dpdown[i];
}
}
return strl-max_mountain;
}
};