最大宽度坡

https://leetcode.cn/problems/maximum-width-ramp/description/

这题要我们找到最大坡度,就是i下标后面那个数比它大,且j-i的值要最大。根据单调栈我们可以设置一个单调递减的栈,这样我们可以把可以是坡底的下标压入栈,然后我们在从前往后遍历,让j-i的值可以最大

         stack<int> p;// 存储索引的单调递减栈 
         int n=nums.size();
         //从左到右遍历数组,构建单调递减栈  
         for(int i=0;i<n;i++)
         {
          // 如果栈为空,或者当前元素小于等于栈顶元素对应的值,则压入栈  
            if(p.empty()||nums[p.top()]>nums[i])
            {
                p.push(i);
            }
         }
         int ans=0;
         for(int i=n-1;i>=0;i--)
         {
         // 当栈不为空,且当前元素大于等于栈顶元素对应的值时,找到了一个坡底找到坡顶  
            while(!p.empty()&&nums[i]>=nums[p.top()])
            {
                ans=max(ans,i-p.top());
                p.pop();
            }
         }
         return ans;
    }
#7月23#
全部评论

相关推荐

06-17 00:26
门头沟学院 Java
程序员小白条:建议换下项目,智能 AI 旅游推荐平台:https://github.com/luoye6/vue3_tourism_frontend 智能 AI 校园二手交易平台:https://github.com/luoye6/vue3_trade_frontend GPT 智能图书馆:https://github.com/luoye6/Vue_BookManageSystem 选项目要选自己能掌握的,然后最好能自己拓展的,分布式这种尽量别去写,不然你只能背八股文了,另外实习的话要多投,尤其是学历不利的情况下,多找几段实习,最好公司title大一点的
无实习如何秋招上岸
点赞 评论 收藏
分享
代码飞升:别用口语,后端就写后端,前端就写前端,最后别光后悔
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务