力扣刷题之单调栈
迪恩_Emma
喜欢看书的Java开发
展开
-
85. 最大矩形(困难)
思路:类比84题,是84题的延续:相当于每一层都根据上一层加高度,每一层都算出最大面积代码:原创 2021-06-20 10:56:57 · 94 阅读 · 0 评论 -
42.接雨水(困难)
思路:观察可知,当前柱子高度若大于前一根柱子高度,则从栈中弹出,并再往前得到一根柱子的高度,也就是要用到3根柱子。取得较高的2根柱子中间的面积。就此可见,要使用单调栈class Solution { public int trap(int[] height) { int n=height.length; Deque<Integer> stack=new ArrayDeque<>(); int sum=0; for(int i=0;i&.原创 2021-03-21 11:26:14 · 147 阅读 · 0 评论 -
739.每日温度(中等)
思路:观察给出的例子:给定一个列表temperatures = [73, 74, 75, 71, 69, 72, 76, 73],输出应该是[1, 1, 4, 2, 1, 1, 0, 0]从前遍历到后,若温度大于前一个,就把前一个弹出,并保存现在下标-前一个值下标的值,最后把当前下标存入栈中,很明显利用的是单调栈class Solution { public int[] dailyTemperatures(int[] T) { int n=T.length; De...原创 2021-03-21 10:18:23 · 57 阅读 · 0 评论 -
84.柱状图中最大的矩形(困难)
思路:题意可以理解为比较当前是否比前一个小,大则继续,小则去掉前一个,并且继续往前比较很容易想到要使用单调栈代码:class Solution { public int largestRectangleArea(int[] heights) { int n=heights.length,max=0; Deque<Integer> stack=new ArrayDeque<>(); for(int i=0;i<=n;i++){..原创 2021-03-19 11:32:28 · 87 阅读 · 1 评论