为了找到每个木条对应的最大矩形,我们需要找到每个短板向左以及向右能够延伸到的最远位置。...比如上图例子当中,根据每个木条向右延伸的最远位置,我们可以得到[0, 5, 3, 3, 5, 5],同样,我们可以得到每根木条向左延伸的数组:[0, 0, 2, 3, 2, 5]。...这个位置我们可以使用单调栈来求,我们用一个有序的栈来维护延伸的位置。举个例子,我们用从栈底往栈顶递增的单调栈来维护每根木条向右延伸的位置。当我们遇到一根新的木条时,会弹出栈中所有比它大的值。...我们把以上的逻辑翻转,就得到了左侧边界求解的逻辑。左右边界有了之后,我们只需要乘上它们之间的区间长度就得到了矩形的面积。...另外,在代码当中需要特别注意边界的情况。比如初始化时左右边界的设定,以及可能会出现连续相等元素的情况,这些都需要纳入考虑。