| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 最大矩形问题总结 -> 正文阅读 |
|
[数据结构与算法]最大矩形问题总结 |
目录 一.柱状图中的最大矩形问题1.题目给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 示例: ? ? 2.思路图解首先初始化一个辅助数组,大小比当前数组大2,目的是为了处理左右边界,防止在左右边界出现最大值;借助栈实现,栈中存储的是元素的下标,如果当前元素比栈顶元素大,就出栈(保证栈不为空),这时候出栈元素就是矩形的高,新的栈顶就是左边界,有边界就是当前元素的下标; 确定好左右边界后,然后就计算当前矩阵的面积,与最大面积进行比较,如果比最大面积大,就修改,直到所有元素处理完,返回结果。 由于栈是单调递增的,当不满足单调递增时,就说明前一个元素可以确定矩形的面积了,如果加入当前元素后满足单调递增,说明还不能够确定栈顶元素的矩形面积。 ? ? 3.代码
? ? 二.最大矩形1.题目给定一个仅包含? 示例: ? ? 2.思路图解(1)方法一(枚举求解)首先初始化当前元素在当前行的宽度,初始化宽度;然后向上找高度,在找的时候宽度也要发生变化,为当前位置和之前结果的最小值,然后计算当前位置的矩形面积,如果大于之前的结果,就保存当前结果。 ? (2)方法二(单调栈)单调栈的步骤如题目一所示 ? ? 3.代码方式一(枚举宽和高来求解)
方法二(柱状图的思路,使用单调栈求解)
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 1:51:36- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |