九章算法面试题43 直方图内最大矩阵
2015-05-12 15:32
274 查看
九章算法官网-原文网址
http://www.jiuzhang.com/problem/43/题目
给出一个直方图(如图所示),求出所给直方图中所包含的最大矩阵面积。直方图可以用一个整数数组表示,如上图为[2, 1, 5, 6, 2, 3]。每个直方块的宽度均为1。上图中包含的最大矩阵面积为10.解答
如果对于每个直方块,找到从它开始往左边数第一个比它小的,和往右边数第一个比他小的,则可以确定出以该直方块为最矮一块的矩阵的最大面积。使用数据结构栈,栈中保存递增序列,从左到右依次遍历每个数让其入栈,入栈之前先pop出所有>=该数的数,从而保持栈中的递增序列。pop完之后的栈顶元素即为该数往左边数第一个比他小的数。同理反过来遍历一次可以得到往右边数第一个比他小的数。时间复杂度O(n),空间复杂度O(n)面试官角度
计算每个数往左或往右数第一个比它大或小的数,这个应用场景则是数据结构栈的典型应用场景。我们在九章算法面试题42中的问题“构造MaxTree”也是用到了这种方法。因此,你需要记住在这种需求的情况下,使用栈可以使得时间复杂度和空间复杂度均为O(n)。直方图最大矩阵的问题,是面试中十分常见的问题,这个题目希望大家进行深入的学习,并编程实现。相关文章推荐
- 算法面试题——直方图内最大矩阵
- 九章算法面试题45 寻找最大的储水容器
- lintcode&九章算法——Google 面试题 | 3个非重复子数组最大和
- 九章算法面试题11 递增矩阵
- 九章算法面试题12 最大子区间/矩阵
- 九章算法面试题35 构造最大数
- 算法题:直方图和0-1矩阵中最大矩形
- 九章算法面试题27 最大连续子集
- 九章算法面试题29 子矩阵的最大公约数
- leetcode直方图的最大矩阵算法
- 九章算法面试题31 子数组的最大差
- 九章算法面试题5 有序数组合并
- 九章算法面试题9 前k大的和
- 九章算法面试题32 小球排序
- 九章算法面试题61 克隆图
- 【实习笔试面试题】2013网易互联网实习笔试算法题-找出最大连续自然数个数
- 3295 落单的数 九章算法面试题
- 九章算法面试题20 寻找重复的URL
- 九章算法面试题33 数组波峰
- 面试题之九章算法 字符串编辑距离