美团-直方图内最大矩形-Java
2017-07-07 21:29
183 查看
import org.junit.Test; /** * 题目描述 * 有一个直方图,用一个整数数组表示,其中每列的宽度为1,求所给直方图包含的最大矩形面积。 * 比如,对于直方图[2,7,9,4],它所包含的最大矩形的面积为14(即[7,9]包涵的7x2的矩形)。 * 给定一个直方图A及它的总宽度n,请返回最大矩形面积。保证直方图宽度小于等于500。保证结果在int范围内。 * 测试样例: [2,7,9,4,1],5 * 返回:14 * * @author 崔洪振367 * @version 创建时间:2017年7月7日 下午5:20:27 * 解题思路:遍历数组,对应元素i,然后从将i为界,分成前后两部分,分别遍历与i相邻的直方图的值大于等于i,则计数器count++。 * 然后求出以i为中心的最大的面积,保存。最后遍历所有面积,找出最大值。 */ public class 直方图内最大矩形 { @Test public void test() { // int[] A = {2,7,9,4,1}; // int n = 5; int[] A = {123,91,771,113,333,215,438,667,460,510,220,532,536,55,162,158,692,435,586,96,11,815,603,695,431,221,835,125,32,38,415,440,1,177,364,132,587,414,576,133,837,514,663,134,428,706,158,581,239,650,814,140,16,93,160,210,202,767,21,782,812,96,220,10,164,793,536,391,84,103,730,526,197,653,642,300,513,510,527,481,627,387,160,225,314,751,161,385,657,847,199,276,124,290,677,350,785,302,814,252,346,295,138,719,262,604,781,355,729,715,402,748,730,503,508,373,144,791,480,205,588,103,471,699,640,755,139,647,357,331,754,563,8,308,548,586,589,272,192,60,703,846,601,170,695,201,400,765,230,516,148,153,267,127,21,703,755,248,535,68,56,728,712,826,70,169,551,619,446,824,678,595,79,61,496,109,579,813,528,277,298,31,600,266,814,246,47,501,295,683,612,186,701,483,220,614,345,278,161,113,256,76,57,387,600,549,698,336,669,689,793,125,203,378,404,307,570,747,89,715,404,125,16,536,627,261,572,218,280,714,410,572,282,812,11,464}; int n = 236; System.out.println(countArea(A, n)); } public int countArea(int[] A, int n) { if(A == null || n == 0){ return 0; } int[] area = new int ; for(int i=0; i<n; i++){ int h = A[i]; int count = 1; for(int j=i-1; j>=0; j--){ if(A[j] >= h){ count++; }else{ break; } } for(int j=i+1; j<n; j++){ if(A[j] >= h){ count++; }else{ break; } } area[i] = count*h; } int maxArea = 0; for(int i=0; i<n; i++){ if(maxArea < area[i]){ maxArea = area[i]; } } return maxArea; } }
相关文章推荐
- 直方图内最大矩形---- 美团2016研发工程师在线编程题
- 【美团】直方图内最大矩形
- 美团 直方图内最大矩形
- 每日AC- 美团 -- 直方图中最大矩形 与最少字符使字符串变成回文字符串
- [算法]CSDN编程挑战赛之寻找直方图中面积最大的矩形
- [算法]CSDN编程挑战赛之寻找直方图中面积最大的矩形
- 寻找直方图中面积最大的矩形 --- 庞果网
- 寻找直方图中面积最大的矩形 --- 庞果网
- 寻找直方图中面积最大的矩形
- 寻找直方图中面积最大的矩形
- 寻找直方图中面积最大的矩形--英雄会
- 黄金队列,汉诺塔,奇怪的比赛,第一个数字,割圆,最大数,矩形的交集和并集,趣味算式(第三届蓝桥杯Java本科预赛试题)
- LeetCode | Largest Rectangle in Histogram(直方图围城的最大矩形面积)
- CSDN编程挑战之寻找直方图中面积最大的矩形
- 寻找直方图中的最大矩形 Largest Rectangle in Histogram
- 寻找直方图中面积最大的矩形
- 寻找直方图中面积最大的矩形
- 直方图最大矩形问题(Largest Rectangle in Histogram)
- 挑战编程:直方图中获取最大矩形面积
- 知识整理——寻找直方图中面积最大的矩形