直方图包含最大矩形
2017-04-19 00:13
211 查看
有一个直方图,用一个整数数组表示,其中每列的宽度为1,求所给直方图包含的最大矩形面积。比如,对于直方图[2,7,9,4],它所包含的最大矩形的面积为14(即[7,9]包涵的7x2的矩形)。
给定一个直方图A及它的总宽度n,请返回最大矩形面积。保证直方图宽度小于等于500。保证结果在int范围内。
测试样例:
这里要考虑的只有:是要高一些的呢?还是要长一些的呢?当然了,我们要的是面积最大的。所以先找到区域里最矮的乘上整个区域长度,然后把这个最矮的矩形左右两边分别进行如上操作,期间一直找寻最大面积~
import java.util.*;
public class MaxInnerRec {
public int countArea(int[] A, int n) {
// write code here
int s = 0;
int e = n - 1;
return Max_Area(A, s, e);
}
public int Max_Area(int[] A, int s, int e) {
if(s==e)
return A[s];
if(s>e)
return 0;
int area = 0, area_t = 0;
int m_index = Find_min(A, s, e);
area = A[m_index] * (e-s+1);
area_t = Max_Area(A, s, m_index-1);
if(area_t>area)
area = area_t;
area_t = Max_Area(A, m_index+1, e);
if(area_t>area)
area = area_t;
return area;
}
public int Find_min(int[] A, int s, int e) {
int min = A[s], res = s, i = s+1;
for(; i<=e; i++) {
if(A[i]<min) {
min = A[i];
res = i;
}
}
return res;
}
}
给定一个直方图A及它的总宽度n,请返回最大矩形面积。保证直方图宽度小于等于500。保证结果在int范围内。
测试样例:
[2,7,9,4,1],5
返回:14
这里要考虑的只有:是要高一些的呢?还是要长一些的呢?当然了,我们要的是面积最大的。所以先找到区域里最矮的乘上整个区域长度,然后把这个最矮的矩形左右两边分别进行如上操作,期间一直找寻最大面积~
import java.util.*;
public class MaxInnerRec {
public int countArea(int[] A, int n) {
// write code here
int s = 0;
int e = n - 1;
return Max_Area(A, s, e);
}
public int Max_Area(int[] A, int s, int e) {
if(s==e)
return A[s];
if(s>e)
return 0;
int area = 0, area_t = 0;
int m_index = Find_min(A, s, e);
area = A[m_index] * (e-s+1);
area_t = Max_Area(A, s, m_index-1);
if(area_t>area)
area = area_t;
area_t = Max_Area(A, m_index+1, e);
if(area_t>area)
area = area_t;
return area;
}
public int Find_min(int[] A, int s, int e) {
int min = A[s], res = s, i = s+1;
for(; i<=e; i++) {
if(A[i]<min) {
min = A[i];
res = i;
}
}
return res;
}
}
相关文章推荐
- 有一个直方图,用一个整数数组表示,其中每列的宽度为1,求所给直方图包含的最大矩形面积。比如,对于直方图[2,7,9,4],它所包含的最大矩形的面积为14(即[7,9]包涵的7x2的矩形)。给定一个直方图A及它的总宽度n,请返回最大矩形面积。保证直方图宽度小于等于500。保证结果在int范围内。
- 寻找直方图中面积最大的矩形
- (牛客)直方图内最大矩形
- lintcode(122)直方图最大矩形覆盖
- [算法]CSDN编程挑战赛之寻找直方图中面积最大的矩形
- 寻找直方图中面积最大的矩形
- LeetCode OJ 之 Largest Rectangle in Histogram (直方图中的最大矩形)
- [Leetcode] largest rectangle in histogram 直方图中最大的矩形
- 【美团】直方图内最大矩形
- 计算直方图中面积最大的矩形
- lintcode 直方图最大矩形覆盖与最大子矩阵
- 庞果网之寻找直方图中面积最大的矩形
- POJ.2559[leetcode.84]直方图最大矩形及二维情况
- 美团-直方图内最大矩形-Java
- [Leetcode] largest rectangle in histogram 直方图中最大的矩形
- 寻找直方图中面积最大的矩形
- 【LeetCode】直方图最大矩形覆盖(栈) - Hard
- 寻找直方图中面积最大的矩形 --- 庞果网
- 【数据结构与算法经典问题解析】直方图中最大矩形
- [Happy DSA] 求解直方图下的最大矩形面积