首页 > 编程语言 >代码随想录算法训练营第六十天 | 84.柱状图中最大的矩形

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

时间:2024-03-29 18:13:52浏览次数:24  
标签:momoDescStack int 随想录 len heights 柱状图 矩形 84

 

 


84. 柱状图中最大的矩形

  已解答 困难  

相关标签

相关企业  

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

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

 

示例 1:

输入:heights = [2,1,5,6,2,3]
输出:10
解释:最大的矩形为图中红色区域,面积为 10

示例 2:

输入: heights = [2,4]
输出: 4

 

提示:

  • 1 <= heights.length <=105
  • 0 <= heights[i] <= 104

 


func largestRectangleArea(heights []int) int { heights = append([]int{0}, heights...) heights = append(heights, 0) varmomoDescStack []int varresint fori := 0; i < len(heights); i++ { forlen(momoDescStack) != 0 && heights[momoDescStack[len(momoDescStack)-1]] > heights[i] { cur := momoDescStack[len(momoDescStack)-1] momoDescStack = momoDescStack[:len(momoDescStack)-1] iflen(momoDescStack) != 0 { res = max((i-momoDescStack[len(momoDescStack)-1]-1)*heights[cur], res) } } momoDescStack = append(momoDescStack, i) } return res }

标签:momoDescStack,int,随想录,len,heights,柱状图,矩形,84
From: https://www.cnblogs.com/suxinmian/p/18104363

相关文章

  • 代码随想录算法训练营第二十四天(回溯1)|77. 组合(JAVA)
    文章目录回溯理论基础概念类型回溯模板77.组合解题思路源码回溯理论基础概念回溯是递归的副产品,本质上是一种穷举回溯解决的问题可以抽象为一种树形结构类型回溯主要用来解决以下问题组合问题:N个数里面按一定规则找出k个数的集合切割问题:一个字符串按一定......
  • 代码随想录算法训练营第二十三天(二叉树9)|669. 修剪二叉搜索树、108. 将有序数组转换为
    文章目录669.修剪二叉搜索树解题思路源码108.将有序数组转换为二叉搜索树解题思路源码538.把二叉搜索树转换为累加树解题思路源码669.修剪二叉搜索树给你二叉搜索树的根节点root,同时给定最小边界low和最大边界high。通过修剪二叉搜索树,使得所有节点的值......
  • 代码随想录算法训练营第五十九天 | 42. 接雨水,503下一个更大元素
    503.下一个更大元素II 已解答中等 相关标签相关企业 给定一个循环数组 nums ( nums[nums.length-1] 的下一个元素是 nums[0] ),返回 nums 中每个元素的 下一个更大元素 。数字 x 的 下一个更大的元素 是按数组遍历顺序,这个数字之后的......
  • CF1184E1题解
    CF11841E1&blog尽然想让第一条边最大且这条边在最小生成树中,那么这条边就需要尽量晚。但是假如加上一条边\(i\)可以使\(u_1\)和\(v_1\)联通并且第\(w_i\lew_1\)那么我们就会舍弃原本第一条边,使用第\(i\)条边。所以第一条边的比安全一定小于等于所有么满足上述条......
  • 10天【代码随想录算法训练营34期】 第五章 栈与队列part01(● 232.用栈实现队列 ● 22
    232.用栈实现队列classMyQueue:def__init__(self):self.queue=[]self.size=0defpush(self,x:int)->None:self.queue.append(x)self.size+=1defpop(self)->int:self.size-=1retur......
  • 杭电OJ 2084 数塔
    数塔题目明确告诉你,这是一道DP动态规划问题,那么首先先回顾什么是动态规划,就是把原问题分解为多个子问题,再记忆子问题的结果,来降低时间复杂度。观察这个数塔,首先设置一个数组dp[][],令\(dp[j][i]\)表示以第j层的第i个结点为终点的最大和,有以下3种情况:1.边界情况,结点\(i==0\)......
  • 02-基于STM32F407MAC与DP83848实现以太网通讯六(IPerf网络速度测试)
    一、IPerf2网络测试工具Iperf2是一个用于测试网络带宽的工具。它是Iperf的旧版本,专注于提供基本的带宽测量功能。通过在客户端和服务器之间发送测试数据流并测量其性能,用户可以评估网络连接的速度和稳定性。Iperf2提供了一种简单而有效的方式来评估网络性能。IPerf3已经发布了,但......
  • P1284 三角形牧场
    原题链接题解1.看到数据范围很小,所以我们可以穷举如何穷举呢?三个方向的背包dp,令\(dp[i][j][k]\)来表示三边长度为\(i,j,k\)时能否达到,然后最外面一维是所用的木板由于她想用所有的木板所以\(k=total-i-j\),所以可以变成两维注意这里的背包dp要倒着来,不然继承的状态是......
  • 代码随想录学习Day 20
    669.修剪二叉搜索树题目链接讲解链接思路:采用递归方法,若root.val>high,判断左子树是否为空,若不空,递归遍历左子树,若空就返回null;若root.val<low,则判断右子树是否为空,若不空就递归遍历右子树,若空就返回null;如果low<=root.val<=high,就递归遍历左右子树,最后返回根节点即......
  • 代码随想录Day17 ● 110.平衡二叉树 ● 257. 二叉树的所有路径 ● 404.左叶子之和
     110.平衡二叉树 classSolution{public://返回以该节点为根节点的二叉树的高度,如果不是平衡二叉树了则返回-1intgetHeight(TreeNode*node){if(node==NULL){return0;}intleftHeight=getHeight(node->left......