首页 > 其他分享 >代码随想录训练营第六十天 | 单调栈

代码随想录训练营第六十天 | 单调栈

时间:2022-12-11 07:22:05浏览次数:72  
标签:peek int max 训练营 随想录 heights stack 单调

今天是代码随想录训练营的第六十天,是最后一天,也代表这一刷结束

 

84.柱状图中最大的矩形

class Solution {
    public int largestRectangleArea(int[] heights) {
        int n = heights.length;
        Stack<Integer> stack = new Stack<>();
        
        int max = -1;
        for(int i = 0; i< n; i++){
            while(!stack.isEmpty() && heights[stack.peek()]>=heights[i]){
                int temp = stack.peek();
                stack.pop();
                max = Math.max(max, (stack.isEmpty()?i:(i-1)-stack.peek())*heights[temp]);

            }
            stack.push(i);
        }
        while(!stack.isEmpty()){
            int temp = stack.peek();
            stack.pop();
            max = Math.max(max,(stack.isEmpty()?n:(n-1-stack.peek()))*heights[temp]);

        }
        return max;
    }
}

要理解空栈和自然弹出所代表的含义。

 

代码随想录训练营刷完了,刷题带给我很大的自信,在刷之前还是对未来很迷茫的,刷的过程中开始投简历,找到了一个目前蛮满意的工作,期待二刷!加油!

标签:peek,int,max,训练营,随想录,heights,stack,单调
From: https://www.cnblogs.com/catSoda/p/16972805.html

相关文章

  • 代码随想录训练营第五十八章|单调栈
    今天是训练营第五十八天,是最后一天单调栈的开始  739.每日温度 classSolution{publicint[]dailyTemperatures(int[]temperatures){intn......
  • 代码随想录训练营第五十九天| 单调栈
     今天是第五十九天,有经典的接雨水问题 ●  503.下一个更大元素II classSolution{publicint[]nextGreaterElements(int[]nums){if(nums==......
  • 代码随想录——二叉树
    二叉树的递归遍历前序中序后序简单//前序遍历·递归·LC144_二叉树的前序遍历classSolution{publicList<Integer>preorderTraversal(TreeNoderoot){......
  • 代码随想录第五十七天 | 动态规划
    今天是第五十七天,也是动态规划的最后一天 647.回文子串 classSolution{publicintcountSubstrings(Strings){intn=s.length();i......
  • 代码随想录算法训练营第三天 | 203.移除链表元素、707.设计链表、206.反转链表
    203. 移除链表元素tag:#链表leetcode地址:203. 移除链表元素代码:functionremoveElements(head:ListNode|null,val:number):ListNode|null{constnewH......
  • javascript-代码随想录训练营day16
    104.二叉树的最大深度题目链接:https://leetcode.cn/problems/maximum-depth-of-binary-tree/题目描述:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子......
  • 单调栈与单调队列
    单调栈是栈中数据具有单调性的一种数据结构,用来求以某个值为最值的最大区间等问题模板(c++):intn,in;intstack[1010];inttop;func(){for(int......
  • javascript-代码随想录训练营day24
    77.组合题目链接:https://leetcode.cn/problems/combinations/题目描述:给定两个整数n和k,返回范围[1,n]中所有可能的k个数的组合。你可以按任何顺序返回答案......
  • 关于《代码随想录》中的一些思路的探讨
      这里提到使用返回值为新加入的节点进行父子关系赋值,我觉得既然是二叉树那么递归就得从三种遍历方式中选择一种出来,不能两次递归然后使用返回值就结束了,不符合第一眼......
  • 代码随想录Day38
    LeetCode450.删除二叉搜索树中的节点给定一个二叉搜索树的根节点root和一个值key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有......