From c26fddc702a333a3ed36fa10ebbf0f71d617ce7b Mon Sep 17 00:00:00 2001 From: ShuangmingMa <52561813+ShuangmingMa@users.noreply.github.com> Date: Sat, 16 Sep 2023 22:33:02 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=200084.=E6=9F=B1=E7=8A=B6?= =?UTF-8?q?=E5=9B=BE=E4=B8=AD=E6=9C=80=E5=A4=A7=E7=9A=84=E7=9F=A9=E5=BD=A2?= =?UTF-8?q?=20Go=E5=8D=95=E8=B0=83=E6=A0=88=E4=BB=A3=E7=A0=81=E7=9A=84?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- problems/0084.柱状图中最大的矩形.md | 56 ++++++++++---------- 1 file changed, 27 insertions(+), 29 deletions(-) diff --git a/problems/0084.柱状图中最大的矩形.md b/problems/0084.柱状图中最大的矩形.md index b54429ed..97dab4f3 100644 --- a/problems/0084.柱状图中最大的矩形.md +++ b/problems/0084.柱状图中最大的矩形.md @@ -478,36 +478,34 @@ class Solution: ```go func largestRectangleArea(heights []int) int { - // 声明max并初始化为0 - max := 0 - // 使用切片实现栈 - stack := make([]int, 0) - // 数组头部加入0 - heights = append([]int{0}, heights...) - // 数组尾部加入0 - heights = append(heights, 0) - // 初始化栈,序号从0开始 - stack = append(stack, 0) - for i := 1; i < len(heights); i++ { - // 结束循环条件为:当即将入栈元素>top元素,也就是形成非单调递增的趋势 - for heights[stack[len(stack)-1]] > heights[i] { - // mid 是top - mid := stack[len(stack)-1] - // 出栈 - stack = stack[0 : len(stack)-1] - // left是top的下一位元素,i是将要入栈的元素 - left := stack[len(stack)-1] - // 高度x宽度 - tmp := heights[mid] * (i - left - 1) - if tmp > max { - max = tmp - } - } - stack = append(stack, i) - } - return max + max := 0 + // 使用切片实现栈 + stack := make([]int, 0) + // 数组头部加入0 + heights = append([]int{0}, heights...) + // 数组尾部加入0 + heights = append(heights, 0) + // 初始化栈,序号从0开始 + stack = append(stack, 0) + for i := 1; i < len(heights); i ++ { + // 结束循环条件为:当即将入栈元素>top元素,也就是形成非单调递增的趋势 + for heights[stack[len(stack) - 1]] > heights[i] { + // mid 是top + mid := stack[len(stack) - 1] + // 出栈 + stack = stack[0 : len(stack) - 1] + // left是top的下一位元素,i是将要入栈的元素 + left := stack[len(stack) - 1] + // 高度x宽度 + tmp := heights[mid] * (i - left - 1) + if tmp > max { + max = tmp + } + } + stack = append(stack, i) + } + return max } - ``` ### JavaScript: