首页 > 其他分享 >84. Largest Rectangle in Histogram

84. Largest Rectangle in Histogram

时间:2022-09-28 11:08:10浏览次数:39  
标签:area int max sum heights num Rectangle Histogram 84


Given n non-negative integers representing the histogram's bar height where the width of each bar is 1, find the area of largest rectangle in the histogram.

 

84. Largest Rectangle in Histogram_i++


Above is a histogram where width of each bar is 1, given height = [2,1,5,6,2,3].

 

84. Largest Rectangle in Histogram_i++_02


The largest rectangle is shown in the shaded area, which has area = 10 unit.

 

Example:

Input: [2,1,5,6,2,3]
Output: 10

class Solution {
public:
int largestRectangleArea(vector<int>& heights) {

int sum = 0;
for (int i = 0; i < heights.size(); ++i) {
if (i + 1 < heights.size() && heights[i] <= heights[i + 1]) {
continue;
}
int value = heights[i];
for (int j = i; j >= 0; --j) {
value = min(value, heights[j]);
int area = value * (i - j + 1);
sum = max(sum, area);
}
}
return sum;

/*
if(heights.size()==0) return 0;
else if(heights.size()==1) return heights[0];

int sum=0;
int num=0;
int maxval=0;
for(int i=0;i<heights.size();i++)
maxval=max(heights[i],maxval);
for(int i=0;i<heights.size();i++)
maxval=max(heights[i],maxval);


for(int i=1;i<=maxval;i++)
{
for(int j=0;j<heights.size();j++)

if((heights[j]=heights[j]-1)>=0) num++;
else {sum=max(num*i,sum);
num=0;}

sum=max(num*i,sum);
num=0;

}


return sum;
// 第一想法,可惜代码超时了~~~~
*/
}
};

 

标签:area,int,max,sum,heights,num,Rectangle,Histogram,84
From: https://blog.51cto.com/u_12504263/5718728

相关文章

  • 484SQL基本概念和485通用语法
    基本概念Structured Query Language:结构化查询语言其实就是定义了操作所有关系型数据库的规则,每一种数据库操作的方式存在不一样的地方,称为“方言”SQL是Structured......
  • es的时间聚合date_histogram
    {//不显示具体的内容"size":0,//聚合"aggs":{//自己取的聚合名字"group_by_grabTime":{......
  • python文件读取错误UnicodeDecodeError: 'utf-8' codec can't decode byte 0x92 in po
    参考:https://segmentfault.com/q/1010000004268196/a-1020000004269556ubuntu下Python3使用open('filename','r').read()读取.txt文件时抛出异常:UnicodeDecodeError......
  • P4484题解
    很神奇的状态。。。。。。很难想象这是一个人能在考场上想到的状态。对于一个排列\(p\),设\(f_i\)表示以\(p_i\)结尾的LIS的长度。考虑排列计数的套路令所有元素......
  • 实例84 二分法求解方程
    #include<stdio.h>#include<math.h>#include<malloc.h>#include<stdlib.h>doubleFunc(double);intBisectRoot(double,double,double,double,double*,int,in......
  • P1844 阅览室
    此题现有题解较为冗长,因此前来贡献一发最短解。首先正常的思路是直接按题意模拟。即:枚举当前时刻\(T\)对于每个人,标记该时刻想要拿到的书根据题目的要求判断冲突情况......
  • redis集群槽位16384
    单机模式主从模式哨兵模式(sentinel)集群模式(cluster)RedisCluster采用虚拟槽分区,所有的键根据哈希函数映射到0~16383个整数槽内,每个节点负责维护一部分槽以及槽......
  • 面试突击84:Spring 有几种事务隔离级别?
    Spring中的事务隔离级别和数据库中的事务隔离级别稍有不同,以MySQL为例,MySQL的InnoDB引擎中的事务隔离级别有4种,而Spring中却包含了5种事务隔离级别。1.什么是......
  • leetcode 6184. 统计共同度过的日子数
    leetcode6184.统计共同度过的日子数题目描述Alice和Bob计划分别去罗马开会。给你四个字符串arriveAlice,leaveAlice,arriveBob和leaveBob。Alice会在日期arr......
  • AcWing 845.八数码
    题目链接:https://www.acwing.com/problem/content/847/一道bfs,主要是状态和状态转换很难搞,看y总的代码中,很多关于c++库中的各种还不太熟悉,现学现卖了属于。一篇关于unord......