代码随想录算法训练营第六十天|单调栈part03|● 84.柱状图中最大的矩形

  •  84.柱状图中最大的矩形 Largest Rectangle in Histogram - LeetCode

单调栈这几题没过脑,感觉一团浆糊,要重新看一下

class Solution {
    public int largestRectangleArea(int[] heights) {
        Stack stack = new Stack<>();
        int[] newHeights = new int[heights.length + 2];
        newHeights[0] = 0;
        newHeights[newHeights.length - 1] = 0;
        for (int i = 0; i < heights.length; i++) {
            newHeights[i + 1] = heights[i];
        }
        heights = newHeights;

        stack.push(0);
        int res = 0;

        for (int i = 1; i < heights.length; i++) {
            if (heights[i] > heights[stack.peek()]) {
                stack.push(i);
            } else if (heights[i] == heights[stack.peek()]) {
                stack.pop();
                stack.push(i);
            } else {
                while (heights[i] < heights[stack.peek()]) {
                    int mid = stack.peek();
                    stack.pop();
                    int left = stack.peek();
                    int right = i;
                    int w = right - left - 1;
                    int h = heights[mid];
                    res = Math.max(res, w * h);
                }
                stack.push(i);
            }
        }
        return res;
    }
}

总结:

60天的时间真的是一晃就过了,好像2,3月就看到了打卡营的信息,一直没有参加,后来6月的时候才参加,要是早几个月的话,现在已经刷了好几遍题了,但如果6月的时候我没有参加这一期,估计到现在也还是在盲目的刷题,也不知道原来自己可以坚持每天打卡,系统的把139题过一遍。刷了这好几年的题,都是自己乱刷,一开始就应该系统的学习,当年报个小班进了大厂,钱早就挣回来了。

很高兴这次坚持了下来,Leetcode刷了600题,但遇到新题还是不会,面试就算遇到原题有时候也不能bug free的写下来,这次遇到的题目基本之前都做过,但重新学习还是收获良多。准备二刷了,再加上blind 75,剑指offer之类的,去掉重复的题,估计会有个150左右,先吃透这些题再追求数量吧。这个leetcode的账号是21年开始的,如果那时候好好的系统的刷了,早就在市场最热的时候去了大厂了,不会到现在这个结局。

往事已以,要关注当下,加油吧!

你可能感兴趣的:(代码随想录算法训练营,算法,java,数据结构)