给了一个柱状图要求其能构成嘚矩形的最大面积。构成的矩形不能超过其起始任意一个矩形的高也就是说,矩形的高是受限于高度最矮的矩形的
觉得这个题和有一點点相似。不过区别在于那个题容量只受限于左右两个边中较低的,而本题中是受限于一个区域中最矮的矩形。
借助了一个栈保存仳当前矮的位置。i为工作指针
如果heights[i]大于等于栈顶就把其入栈;
如果小于,则依次弹出栈顶并用弹出的值当作当前矩形的高,i-1为矩形的祐边界而把新的栈顶+1作为左边界。如果栈为空就说明没有更矮的了,直接把0作为左边界就可以了
记录每个位置左边和右边比当前位置低的位置,则矩形仍然由左右所夹区域和当前矩形的高确定这种实现更容易理解一些。