首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

柱状图中最大矩形

给定 n 个非负整数,用来表示柱状图中各个柱子高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来矩形最大面积。...以上是柱状示例,其中每个柱子宽度为 1,给定高度为 [2,1,5,6,2,3]。 图中阴影部分为所能勾勒出最大矩形面积,其面积为 10 个单位。...null || heights.length == 0) { return 0; } int res = 0; //单调递增保存索引栈...Integer>(); //遍历数组 for (int i = 0; i < heights.length; i++) { //栈不为空并且遍历到元素值小于栈中保存索引对应元素值...-1 : stack.peek(); //第一个出栈索引右边索引减去出栈索引左边索引再-1计算出长度*出栈索引对应元素值计算面积,取最大

18520

柱状图中最大矩形

题目 给定 n 个非负整数,用来表示柱状图中各个柱子高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来矩形最大面积。 ?...1 以上是柱状示例,其中每个柱子宽度为 1,给定高度为 [2,1,5,6,2,3]。 ? 2 图中阴影部分为所能勾勒出最大矩形面积,其面积为 10 个单位。...所以这里就用到了单调栈,我们可以花费一点空间,用一个栈来维护一组下标,对于栈中每一个下标所对应元素,它左边第一个比他小元素下标就是栈中前一个下标,有了这样思路,就容易解决问题了。...还是模拟一下过程,对于图中测试样例。...,所以要出栈,首先3出栈,6对应左边第一个比他小就是下标2对应5,右边就是当前下标对应2,所以面积为6,然后5出栈,他左边第一个比他小是下标1对应1,右边则是当前下标对应2,所以更新面积得到

1.9K30
您找到你想要的搜索结果了吗?
是的
没有找到

柱状图中最大矩形

题目描述 解题思路 代码 复杂度分析 GitHub LeetCode 项目 题目描述 题目链接 给定 n 个非负整数,用来表示柱状图中各个柱子高度。每个柱子彼此相邻,且宽度为 1 。...求在该柱状图中,能够勾勒出来矩形最大面积。 [20210222192315] 以上是柱状示例,其中每个柱子宽度为 1,给定高度为 2,1,5,6,2,3。...[20210222192328] 图中阴影部分为所能勾勒出最大矩形面积,其面积为 10 个单位。...示例: 输入:[2,1,5,6,2,3] 输出:10 解题思路 最暴力思路就是,对于数组中每个元素,以这个元素值为高,分别向左、向右寻找第一个小于该元素边界,计算并更新矩形面积。...,如果相邻两个元素相等,那么这个矩形面积就是重复计算

22010

LeetCode-84-柱状图中最大矩形

# LeetCode-84-柱状图中最大矩形 给定 n 个非负整数,用来表示柱状图中各个柱子高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来矩形最大面积。...以上是柱状示例,其中每个柱子宽度为 1,给定高度为 [2,1,5,6,2,3]。 图中阴影部分为所能勾勒出最大矩形面积,其面积为 10 个单位。...示例1: 输入: [2,1,5,6,2,3] 输出: 10 # 解题思路 方法1、暴力破解: 固定一个柱子高度,往左和右寻找第一个高度小于当前柱子柱体,向左和向右走步数即是宽度 对于每个柱子,都计算一次以当前柱子为高度...,左右寻找位置为宽度围成矩形面积,最后得到最大面积即可 方法2、单调栈: 我们可以 O(1) 获取柱体 i 左边第一个比它小柱体吗?...答案就是单调增栈,因为对于栈中柱体来说,栈中下一个柱体就是左边第一个高度小于自身柱体。

23520

LeetCode-84-柱状图中最大矩形

# LeetCode-84-柱状图中最大矩形 给定 n 个非负整数,用来表示柱状图中各个柱子高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来矩形最大面积。...以上是柱状示例,其中每个柱子宽度为 1,给定高度为 [2,1,5,6,2,3]。 图中阴影部分为所能勾勒出最大矩形面积,其面积为 10 个单位。...示例1: 输入: [2,1,5,6,2,3] 输出: 10 # 解题思路 方法1、暴力破解: 固定一个柱子高度,往左和右寻找第一个高度小于当前柱子柱体,向左和向右走步数即是宽度 对于每个柱子,...都计算一次以当前柱子为高度,左右寻找位置为宽度围成矩形面积,最后得到最大面积即可 方法2、单调栈: 我们可以 O(1) 获取柱体 i 左边第一个比它小柱体吗?...答案就是单调增栈,因为对于栈中柱体来说,栈中下一个柱体就是左边第一个高度小于自身柱体。

18710

柱状图中最大矩形

题目描述 ` 给定 n 个非负整数,用来表示柱状图中各个柱子高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来矩形最大面积。 ?...以上是柱状示例,其中每个柱子宽度为 1,给定高度为 [2,1,5,6,2,3]。 ? 图中阴影部分为所能勾勒出最大矩形面积,其面积为 10 个单位。...而矩形面积等于(右端点坐标 - 左端点坐标 + 1) * 最小高度,最小高度我们可以在遍历时候顺便求出。...这种算法毫无疑问也是正确。我们证明一下,假设 f(i) 表示求以 i 为最低点情况下,所能形成最大矩阵面积。...我们核心是求左边第一个比 i 小和右边第一个比 i 小。如果你熟悉单调栈的话,那么应该会想到这是非常适合使用单调栈来处理场景。

39520

​LeetCode刷题实战84: 柱状图中最大矩形

今天和大家聊问题叫做 柱状图中最大矩形,我们先来看题面: https://leetcode-cn.com/problems/largest-rectangle-in-histogram/ Given...题意 给定 n 个非负整数,用来表示柱状图中各个柱子高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来矩形最大面积。 ?...所以我们可以先来思考一下最简单解法。 最简单解法就是找出能够围成所有矩形,然后比较它们之间面积,得出其中最大面积。我们很容易可以想到可以遍历矩形起始位置,这样就得到了矩形宽。...举个例子,我们用栈底往栈顶递增单调栈来维护每根木条向右延伸位置。当我们遇到一根新木条时,会弹出栈中所有比它长值。对于这些值来说,这根新木条就是它右边界。...既需要理清楚题意,最简单解法出发推导出优化方法,也需要深刻理解单调栈这个数据结构,才可以灵活应用。 另外,在代码当中需要特别注意边界情况。

38111

【LeetCode热题100】【栈】柱状图中最大矩形

柱状图中最大矩形 - 力扣(LeetCode) 要找最大矩形就是要找以每根柱子为高度往两边延申边界,要作为柱子边界就必须高度不能低于该柱子,否则矩形无法同高,也就是需要找出以每根柱子为高、往两边找更低柱子作为当前矩形边界...(不含) 可以用一个单调递增栈,存储下标,一直记录更高柱子,一旦碰到低柱子,此时栈顶可作为矩形高,当前柱子作为右边界(不含),栈顶往下一个元素可作为左边界(不含),计算完成后弹出栈顶,这样可以以每个柱子高度为矩形高计算一次面积...,且边界都是尽可能延申 class Solution { public: int largestRectangleArea(vector &heights) { int...plus.empty() && heights[i] < heights[plus.top()]) { // 找到更低了,说明找到边界 int height = heights

7210

Leetcode No.84 柱状图中最大矩形(单调栈)

一、题目描述 给定 n 个非负整数,用来表示柱状图中各个柱子高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来矩形最大面积。...示例 1: 输入:heights = [2,1,5,6,2,3] 输出:10 解释:最大矩形为图中红色区域,面积为 10 示例 2: 输入: heights = [2,4] 输出: 4 提示...其实是不够,因为计算矩形还需要计算宽度,很容易知道宽度是由下标确定,记录了下标其实对应高度就可以直接输入数组中得出,因此,应该记录是下标。...我们发现了,只要是遇到了当前柱形高度比它上一个柱形高度严格小时候,一定可以确定它之前某些柱形最大宽度,并且确定柱形宽度顺序是右边向左边。...我们在缓存数据时候,是左向右缓存,我们计算出一个结果顺序是右向左,并且计算完成以后我们就不再需要了,符合后进先出特点。因此,我们需要这个作为缓存数据结构就是栈。

30920

柱状图中最大矩形(单调递增栈)

题目 题目链接 给定 n 个非负整数,用来表示柱状图中各个柱子高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来矩形最大面积。 ?...以上是柱状示例,其中每个柱子宽度为 1,给定高度为 [2,1,5,6,2,3]。 图中阴影部分为所能勾勒出最大矩形面积,其面积为 10 个单位。 2....解题 单调递增栈,遇到递减进行处理,最后未处理完,在末尾加个0(遇到递减了,处理剩余) 栈内左侧都比栈顶小,当前也比其小,那么以栈顶为高矩形能够扩展宽度就知道了,宽度 = 当前位置 减去...s.empty() && h[s.top()] > h[i])//前面大于我,遇到下降 { prevH = h[s.top()]; s.pop

36030

☆打卡算法☆LeetCode 84、柱状图中最大矩形 算法解析

一、题目 1、算法题目 “给定n个非负整数,用来表示柱状图每个柱子高度,求柱状图中最大矩形面积。” 题目链接: 来源:力扣(LeetCode) 链接:84....柱状图中最大矩形 - 力扣(LeetCode) (leetcode-cn.com) 2、题目描述 给定 n 个非负整数,用来表示柱状图中各个柱子高度。每个柱子彼此相邻,且宽度为 1 。...求在该柱状图中,能够勾勒出来矩形最大面积。...示例 1: 输入: heights = [2,1,5,6,2,3] 输出: 10 解释: 最大矩形为图中红色区域,面积为 10 示例 2: 输入: heights = [2,4] 输出: 4 二、解题...这样好处在于栈内元素都是递增,当元素出栈时,新元素是出栈元素后小一个元素,这样就可以得到一个左右边界高度,使用单调栈,在出栈操作时得到左右边界并计算面积。

25240

git rm 暂存区中删除内容

1. git rm 基本使用 ---- git rm 命令用于暂存区和工作区中删除内容 一般情况下,我们删除文件都是手动将文件删除,但是这种删除方式使用 git status 查看状态就会看到文件在...Changes not staged for commit 提示区域中 手动删除只是删除了工作区中文件,如果要将删除操作提交到版本库,则需要先将删除操作提交到暂存区 rm 4.txt git add...4.txt git commit -m '删除文件4.txt' 更加方便快捷方式是使用 git rm 命令,它会将文件工作区和暂存区删除 git rm 4.txt git commit -m '删除文件...文件,则必须要用强制删除选项 -f, --force git rm -f 如果只想把文件暂存区中移除,希望文件保留在工作目录中,可以使用 --cached 选项 git rm --cached... 如果删除是一个文件夹,则需要使用 -r 参数 git rm -r

2.4K20

每日三题-接雨水、柱状图中最大矩形、每日温度

‍个人主页: 才疏学浅木子 ‍♂️ 本人也在学习阶段如若发现问题,请告知非常感谢 ‍♂️ 本文来自专栏: 算法 算法类型:Hot100题 每日三题 接雨水 柱状图中最大矩形 每日温度...接雨水 解法一 暴力(按列求) 获取离当前节点最远左右两边比当前节点值大值height[l],hright[r] 因为决定装水容量是矮所以取height[l],hright[r] 中小那个减去...每次遍历height数组,如果当前height[i] < nowH(当前行)并且左右两边都有大等于nowH那么就可以res++ class Solution { public int...height[i])-height[top]); } stack.add(i); } return res; } } 柱状图中最大矩形...解法一 暴力 遍历数组,计算以当前height[i]为高矩形面积 向左找到最左边大等于height[i]下标 向右找到最左边大等于height[i]下标 然后计算面积 class

17420

iOS背景图中取色代码

void *bitmapData; //内存空间指针,该内存空间大小等于图像使用RGB通道所占用字节数。...,每个像素点ARGB四个通道各占8个bit(0-255)空间 bitmapByteCount = (bitmapBytesPerRow * pixelsHigh); //计算整张图占用字节数...= malloc( bitmapByteCount ); //创建CoreGraphic图形上下文,该上下文描述了bitmaData指向内存空间需要绘制图像一些绘制参数 context...CFRelease()函数释放 CGColorSpaceRelease( colorSpace ); return context; } // 返回一个指针,该指针指向一个数组,数组中每四个元素都是图像上一个像素点...RGBA数值(0-255),用无符号char是因为它正好取值范围就是0-255 static unsigned char *RequestImagePixelData(UIImage *inImage

89820
领券