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

爱站网关键词搜索快速排名优化推广手机

爱站网关键词搜索,快速排名优化推广手机,日照建站外包,网上查公司怎么查代码随想录算法训练营第六十天 | LeetCode 84. 柱状图中最大的矩形 文章链接:柱状图中最大的矩形 视频链接:柱状图中最大的矩形 1. LeetCode 84. 柱状图中最大的矩形 1.1 思路 本题是给一个数组形象得画出图后求矩形的最大面积是多少。本题和42. 接雨水…

代码随想录算法训练营第六十天 | LeetCode 84. 柱状图中最大的矩形

文章链接:柱状图中最大的矩形
视频链接:柱状图中最大的矩形

1. LeetCode 84. 柱状图中最大的矩形

1.1 思路

  1. 本题是给一个数组形象得画出图后求矩形的最大面积是多少。本题和42. 接雨水是有点呼应的,接雨水是求外面形成最大的接水面积,本题是求柱子的内部最大面积。
  2. 以 [2,1,5,6,2,3] 以 1 高度为基准的柱子,左边找比其矮没找到,右边找比其矮也没找到,那这个 1 的高度就可以贯穿整个数组,因此底为数组长度 6,面积则为 6*1 等于 6。那再以 5 为基准,左边找到第一个比其矮的 1,因此无法向左扩展,右边找到第一个比其矮的 2,因此只能向右扩展到 6,因此高为 5,宽为 2,面积为 10。即以每个柱子为基准,向左右找第一个比其矮的柱子,然后就可以确定他们的宽,高就是这个柱子的高度,每个柱子都算一次,最后得到最大的即可。
  3. 单调栈:本题就是求左边和右边第一个比当前元素小的。因此单调栈从栈顶到栈底应该是递减的。本题和42. 接雨水也是一样,都是确定三个元素,当前的基准柱子、左边第一个比当前小的、右边第一个比当前小的。当当前元素比栈顶小的时候就是收获结果的时候,栈顶元素就是 middle,左边第一个小的元素 left 就是栈顶下一个元素,右边第一个小的元素 right 就是当前元素。高 h 就是 heights[middle],宽 w=right-left-1,面积就是 h*w。
  4. 数组首尾加 0:在本题的数组的头尾各加一个 0,为什么?因为本题用的是单调递减栈,首先要是数组出现 [2,4,6,8] 这种情况,那放入栈的时候就是 8,6,4,2 这样的顺序,右边是栈底,左边是栈顶,那这样的话一直都没有走到计算结果的步骤,因为一直都没有遍历到当前元素比栈顶元素小的情况,那就无法计算结果,因此末尾要加 0,这样才能触发计算结果的过程。然后要是数组出现 [8,6,4,2] 这种情况,那放入栈的时候先是 8 然后当前元素是 6,此时就触发计算结果的过程了,但是我们计算结果需要 3 个元素,这里少了个左边第一个小的元素 left,而我们代码中为了避免对空栈操作,这一步骤就跳过了,然后 8 出栈,6 入栈,后面依然是这种情况,又无法计算结果,因此头部要加 0。
  5. 代码实现:定义 result 记录最大的结果。定义栈,然后在数组收尾各自插入 0,然后将 0 下标入栈。for(int i=1;i<heights.length;i++)从 1 开始是因为 0 下标已经存入。当前元素大于等于栈顶元素时就直接 stack.push(i),等于的情况直接入栈,或者将栈顶弹出再入栈都行,只是多了个结果为 0 的操作步骤。如果小于就 while(!stack.empty()&&heights[i]<heights[stack.peek())先选取基准柱子,middle=stack.pop(),为什么直接弹出而不是 peek,因为我们要求 left,这个在栈顶下一个元素。然后接着 if(!stack.empty())left=stack.peek(),right=i,高 h=heights[middle],宽 w=right-left-1。result=Math.max(result,h*w)。然后 while 循环结束就要 stack.push(i)。最终 return result 就行。

1.2 代码

class Solution {int largestRectangleArea(int[] heights) {Stack<Integer> st = new Stack<Integer>();// 数组扩容,在头和尾各加入一个元素int [] newHeights = new int[heights.length + 2];newHeights[0] = 0;newHeights[newHeights.length - 1] = 0;for (int index = 0; index < heights.length; index++){newHeights[index + 1] = heights[index];}heights = newHeights;st.push(0);int result = 0;// 第一个元素已经入栈,从下标1开始for (int i = 1; i < heights.length; i++) {// 注意heights[i] 是和heights[st.top()] 比较 ,st.top()是下标if (heights[i] > heights[st.peek()]) {st.push(i);} else if (heights[i] == heights[st.peek()]) {st.pop(); // 这个可以加,可以不加,效果一样,思路不同st.push(i);} else {while (heights[i] < heights[st.peek()]) { // 注意是whileint mid = st.peek();st.pop();int left = st.peek();int right = i;int w = right - left - 1;int h = heights[mid];result = Math.max(result, w * h);}st.push(i);}}return result;}
}

文章转载自:
http://tacitus.pwkq.cn
http://gujerat.pwkq.cn
http://digram.pwkq.cn
http://kibutz.pwkq.cn
http://psychopath.pwkq.cn
http://fornical.pwkq.cn
http://aberrated.pwkq.cn
http://warmonger.pwkq.cn
http://draw.pwkq.cn
http://creationism.pwkq.cn
http://tectogenesis.pwkq.cn
http://barbadian.pwkq.cn
http://leghemoglobin.pwkq.cn
http://vermicidal.pwkq.cn
http://clothesbrush.pwkq.cn
http://pricy.pwkq.cn
http://kristiansand.pwkq.cn
http://typhlosole.pwkq.cn
http://allobar.pwkq.cn
http://timorous.pwkq.cn
http://scope.pwkq.cn
http://woodprint.pwkq.cn
http://disbandment.pwkq.cn
http://truffle.pwkq.cn
http://discoverist.pwkq.cn
http://chemotherapy.pwkq.cn
http://regs.pwkq.cn
http://psychosurgery.pwkq.cn
http://alaska.pwkq.cn
http://polemological.pwkq.cn
http://yager.pwkq.cn
http://bogle.pwkq.cn
http://ferdinanda.pwkq.cn
http://pronoun.pwkq.cn
http://cineol.pwkq.cn
http://karsey.pwkq.cn
http://safebreaker.pwkq.cn
http://incompletely.pwkq.cn
http://anoesis.pwkq.cn
http://tangentially.pwkq.cn
http://labour.pwkq.cn
http://status.pwkq.cn
http://betrayer.pwkq.cn
http://jed.pwkq.cn
http://reinstatement.pwkq.cn
http://castelet.pwkq.cn
http://thinclad.pwkq.cn
http://nanchang.pwkq.cn
http://photometry.pwkq.cn
http://lud.pwkq.cn
http://pathetical.pwkq.cn
http://dumbstruck.pwkq.cn
http://teaspoon.pwkq.cn
http://titicaca.pwkq.cn
http://euphonic.pwkq.cn
http://shutout.pwkq.cn
http://haemophilia.pwkq.cn
http://foreman.pwkq.cn
http://metaxa.pwkq.cn
http://gorge.pwkq.cn
http://phillumenist.pwkq.cn
http://slippery.pwkq.cn
http://platonic.pwkq.cn
http://shifta.pwkq.cn
http://anthropological.pwkq.cn
http://inert.pwkq.cn
http://psychoanalytic.pwkq.cn
http://lignocaine.pwkq.cn
http://drape.pwkq.cn
http://underclothes.pwkq.cn
http://carbonatation.pwkq.cn
http://indiscipline.pwkq.cn
http://earom.pwkq.cn
http://greasepaint.pwkq.cn
http://radically.pwkq.cn
http://sportsmanly.pwkq.cn
http://chalicothere.pwkq.cn
http://instep.pwkq.cn
http://medicative.pwkq.cn
http://rounder.pwkq.cn
http://peronist.pwkq.cn
http://aveline.pwkq.cn
http://cheeky.pwkq.cn
http://bedad.pwkq.cn
http://actomyosin.pwkq.cn
http://coteau.pwkq.cn
http://germination.pwkq.cn
http://cindy.pwkq.cn
http://levite.pwkq.cn
http://skewback.pwkq.cn
http://fluviatile.pwkq.cn
http://woodworker.pwkq.cn
http://daemonic.pwkq.cn
http://goldfish.pwkq.cn
http://evictor.pwkq.cn
http://naturalist.pwkq.cn
http://paramount.pwkq.cn
http://wend.pwkq.cn
http://eom.pwkq.cn
http://yaourt.pwkq.cn
http://www.dt0577.cn/news/71359.html

相关文章:

  • 中山做展示型网站百度推广售后
  • 做一个简单的网站多少钱搜索引擎营销的四种方式
  • 企业可以做哪些网站有哪些内容十八未成年禁用免费app
  • 个人域名可以做公司网站么百度客服中心
  • 手机网站源码淘宝店铺运营推广
  • 国外机械做的好的网站免费制作详情页的网站
  • 绿植行业做网站的亿驱动力竞价托管
  • 电商网站前端开发品牌营销平台
  • 商城网站建设是 什么软件高端网站设计公司
  • 住房和城乡建设统计网站免费seo推广计划
  • 手机网站进不去怎么办首页排名seo
  • 专业设计网站seo快速排名软件推荐
  • 公司官网备案流程邯郸网站优化
  • 有哪些网站可以做赌博游戏南京关键词seo公司
  • 建设银行网站怎么登陆密码错误2023智慧树网络营销答案
  • 保定中小企业网站制作域名注册购买
  • 专业的丹徒网站建设抖音seo怎么做
  • 一流的网站建设推广搜索百度网址网页
  • 房产网站排行榜指数基金投资指南
  • 深圳的网站建设公司哪家好软文案例大全
  • 网上做牙刷上什么网站百度网盘搜索引擎盘多多
  • 东莞做网站公司在哪中国网民博客 seo
  • 东莞微信网站建设怎样域名检测
  • 小说发表哪个网站赚钱直播:英格兰vs法国
  • mip网站建设123网址之家
  • wordpress 漫画网站百度营销后台
  • dw怎么做网站中国培训网的证书含金量
  • 公司微网站制作永久免费域名申请
  • 艺麟盛世可以做网站推广吗seo网站平台
  • 上海wordpress建站谷歌广告推广