最大矩形面积
2018-03-23 00:00
344 查看
【问题】
给定一组非负整数组成的数组h,代表一组柱状图的高度,其中每个柱子的宽度都为1。 在这组柱状图中找到能组成的最大矩形的面积(如图所示)。 入参h为一个整型数组,代表每个柱子的高度,返回面积的值。
输入描述:
输出描述:
输入例子1:
输出例子1:
【解决】
②
import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] height = new int
;
for (int i = 0;i < n;i ++){
height[i] = sc.nextInt();
}
int[] dp = new int
;
for (int i = 0;i < n;i ++){
int start = i;
int end = i;
while (start >= 0 && height[start] >= height[i]){
start --;
}
while (end < n && height[end] >= height[i]){
end ++;
}
start ++;
end --;
dp[i] = height[i] * (end - start + 1);
}
int max = 0;
for (int i = 0;i < n;i ++){
max = Math.max(dp[i],max);
}
System.out.println(max);
}
}
① 之前
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] height = new int
;
for (int i = 0;i < n;i ++){
height[i] = sc.nextInt();
}
int maxArea = 0;
for (int i = 0;i < n;i ++){
int h = height[i];
int count = 1;
int left = i - 1;
int right = i + 1;
while (left >= 0){
if (height[left] >= h){
count ++;
left --;
}else {
break;
}
}
while (right < n){
if (height[right] >= h){
count ++;
right ++;
}else {
break;
}
}
int area = h * count;
maxArea = Math.max(area,maxArea);
}
System.out.println(maxArea);
}
}
给定一组非负整数组成的数组h,代表一组柱状图的高度,其中每个柱子的宽度都为1。 在这组柱状图中找到能组成的最大矩形的面积(如图所示)。 入参h为一个整型数组,代表每个柱子的高度,返回面积的值。
输入描述:
输入包括两行,第一行包含一个整数n(1 ≤ n ≤ 10000) 第二行包括n个整数,表示h数组中的每个值,h_i(1 ≤ h_i ≤ 1,000,000)
输出描述:
输出一个整数,表示最大的矩阵面积。
输入例子1:
6 2 1 5 6 2 3
输出例子1:
10
【解决】
②
import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] height = new int
;
for (int i = 0;i < n;i ++){
height[i] = sc.nextInt();
}
int[] dp = new int
;
for (int i = 0;i < n;i ++){
int start = i;
int end = i;
while (start >= 0 && height[start] >= height[i]){
start --;
}
while (end < n && height[end] >= height[i]){
end ++;
}
start ++;
end --;
dp[i] = height[i] * (end - start + 1);
}
int max = 0;
for (int i = 0;i < n;i ++){
max = Math.max(dp[i],max);
}
System.out.println(max);
}
}
① 之前
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] height = new int
;
for (int i = 0;i < n;i ++){
height[i] = sc.nextInt();
}
int maxArea = 0;
for (int i = 0;i < n;i ++){
int h = height[i];
int count = 1;
int left = i - 1;
int right = i + 1;
while (left >= 0){
if (height[left] >= h){
count ++;
left --;
}else {
break;
}
}
while (right < n){
if (height[right] >= h){
count ++;
right ++;
}else {
break;
}
}
int area = h * count;
maxArea = Math.max(area,maxArea);
}
System.out.println(maxArea);
}
}
相关文章推荐
- 51Nod 1102 面积最大的矩形
- 求直方图中最大矩形面积(C语言实现)
- 寻找直方图中面积最大的矩形 --- 庞果网
- 寻找直方图中面积最大的矩形
- Arithmetic problem | 求n个直方图所含最大的矩形面积
- 给定整型数组,其中每个元素表示木板的高度,木板的宽度都相同,求这些木板拼出的最大矩形的面积。并分析时间复杂度。
- [编程题] 最大矩形面积(美团点评2017秋招)
- 【难】【DP】计算“skyline”下的最大矩形面积
- Get Many Persimmon Trees poj(动态规划 矩形面积一定时所圈中最大的树)
- POJ2559 最大矩形面积
- 面积最大的矩形
- POJ 2082 最大矩形面积
- 庞果网之寻找直方图中面积最大的矩形
- Largest Rectangle in Histogram 一排矩形中的最大的面积
- poj2599 单调栈维护最大连续矩形面积
- 51nod 1102 面积最大的矩形(单调栈)
- 51Nod-1102-面积最大的矩形
- HDOJ 最大矩形面积 栈
- 数据结构Stack实例(二):求矩形最大面积
- opencv——通过面积筛选最大轮廓,并求凸包矩形的长和宽