思路:
单调栈+dp。
实现:
1 class Solution { 2 public: 3 int totalSteps(vector<int>& nums) { 4 int n=nums.size(); 5 stack<int>st; 6 vector<int>dp(n,0); 7 for(int i=0;i<n;i++){ 8 int maxn=0; 9 while(!st.empty() and nums[i]>=nums[st.top()]){ 10 maxn=max(maxn,dp[st.top()]); 11 st.pop(); 12 } 13 if(!st.empty())dp[i]=maxn+1; 14 else dp[i]=0; 15 st.push(i); 16 } 17 return *max_element(dp.begin(),dp.end()); 18 } 19 };