当前位置: 首页 > news >正文

万能搜索引擎网站山东网站建设网

万能搜索引擎网站,山东网站建设网,建设干部培训中心网站,优化模型的推广84. 柱状图中最大的矩形 正文 题目如下 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 这道题暴力很简单,但是时间复杂度是O(N^2)&#xf…

84. 柱状图中最大的矩形


正文

题目如下

给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。

求在该柱状图中,能够勾勒出来的矩形的最大面积。

这道题暴力很简单,但是时间复杂度是O(N^2),在这里我们不予考虑,我在这里主要介绍一下单调栈的做法。

单调栈主要的思路就是,将遍历到的元素下标压入栈中,如果当前遍历的元素小于栈顶元素,就没有遵循单调的原则,需要先把栈中大于当前遍历到的数字的元素弹出,再把当前遍历的元素压入栈中,在这个过程中,我们还需要重新计算最大的矩形面积。

如何计算?

  • 首先我们需要明确,我们的栈是存储的下标,通过下标的差值我们可以计算出宽度,而且栈中元素是保持着单调递增的趋势,所以我们每次弹出的下标对应的数值都可以作为我们的矩形的高,这样便可以计算出我们的矩形面积。

为什么这样做能得出正确答案?

  • 首先,我们需要先了解一下暴力的做法,暴力是通过两个for循环遍历来实现的矩形的面积最大值计算,而单调栈是只在每次弹出元素的时候重新计算矩形面积,每个元素最多入栈,出栈一次,所以时间复杂度远小于暴力做法。
  • 但我们仔细想一下就能够知道,暴力做法是有很多多余的计算步骤的,比如以[1,2,3,4,5,6,1]为例子,遍历1的时候,会把2,3,4,5,6,1遍历完,显然效率很低,而单调栈在弹出元素时,能够确定,以当前下标对应的矩形的高的最大面积是多少,想清楚这一点,这道题就迎刃而解了。

下面是代码

func largestRectangleArea(heights []int) int {var st []intans := 0heights = append(heights, -1)for i := 0; i < len(heights); i ++ {for len(st) != 0 && heights[i] < heights[st[len(st) - 1]] {idx := st[len(st) - 1]st = st[:len(st) - 1]var l intif len(st) == 0 {l = -1} else {l = st[len(st) - 1]}ans = Max(ans, (i - l - 1) * heights[idx])}st = append(st, i)}return ans}func Max(a int, b int) int {if a >= b {return a}return b}

结语

这道题思路来源于bilibili,如果觉得不清晰可以看看这个视频。

http://www.yayakq.cn/news/190732/

相关文章:

  • 海口网站建设在线广西桂林理工大学
  • 美食 网站模板湖南大型网站建设
  • 搭建什么网站好seo网站关键词优化排名
  • 高端网站设计需求有哪些想学设计师首先要学什么
  • 张雪峰说软件工程长沙企业关键词优化哪家好
  • 做go kegg的网站软件开发工具简称
  • 国外可以做自媒体的网站做网站全国最大
  • 好的建设网站公司哪家好海南: 加快推进全岛封关运作
  • 自己创造网站平台网络技术论坛
  • 网站建设栏目结构表网站侵权怎么做公证或证据保存
  • 下沙网站建设wordpress主题设置备份
  • vps网站搬家现在可以用的网站
  • jsp 响应式网站模板网站建设公司的前景
  • 水泥制品做阿里巴巴还是网站好怎么cms做网站
  • 个人做电子商务网站备案什么是网站维护中
  • 网上做结婚照的网站移动端关键词排名如何优化
  • 做我女朋网站源码广告推广合同范本
  • wordpress全站pjax系统和网站哪个简单一点
  • 网站开启gzip建站行业前景
  • 焦作市住房和城乡建设局网站如何创立自己的公众号
  • 做网站做本地服务器吗办公设备网站推广怎么做
  • 推广竞价关键词优化seo优化
  • 免费网站国内空间二手车网站模版
  • html做游戏网站定制平台
  • php mysql做网站登录国家企业信息信用信息公示江苏
  • 中国建设银行河北省分行官方网站摄影网站导航
  • 太原市建设局网站做书的封面的网站素材
  • 如何做好一个网站的推广小规模开普票网站建设几个点
  • 兰州网站设计哪个平台好部门网站的开发 意义
  • 网站开发 浏览器兼容性上海网站建设联系电话