Leetcode 1671. Get the minimum number of deletions of Yamagata array (DAY 70) ---- Dynamic programming learning period (classes will start next week)

Original title

Insert picture description here


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;
    }
};

Guess you like

Origin blog.csdn.net/qq_37500516/article/details/115233903