查看: 1592|回复: 1

寻找直方图中面积最大的矩形

[复制链接]
  • TA的每日心情
    郁闷
    2024-10-28 10:11
  • 签到天数: 1703 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2013-7-24 15:49:21 | 显示全部楼层 |阅读模式
    分享到:
    寻找直方图中面积最大的矩形题目详情:
    给定直方图,每一小块的height由N个非负整数所确定,每一小块的width都为1,请找出直方图中面积最大的矩形。

       如下图所示,直方图中每一块的宽度都是1,每一块给定的高度分别是[2,1,5,6,2,3]:


       那么上述直方图中,面积最大的矩形便是下图所示的阴影部分的面积,面积= 10单位。


       请完成函数largestRectangleArea,实现寻找直方图中面积最大的矩形的功能,如当给定直方图各小块的高度= [2,1,5,6,2,3] ,返回10。
    1. int largestRectangleArea(const int *height,int n) {
    2.     int max=0,i,p,h,j;
    3.     for(i=0;i<n;i++)
    4.     {
    5.         h=*(height+i);
    6.         p=i-1;
    7.         j=1;
    8.         while(p>=0 && *(height+p)>=h){j++;p--;}
    9.         p=i+1;
    10.         while(p<n && *(height+p)>=h){j++;p++;}
    11.         if((j*h)>max)max=j*h;
    12.     }
    13.     return max;
    14. }
    复制代码

    回复

    使用道具 举报

  • TA的每日心情
    开心
    2020-1-18 12:34
  • 签到天数: 1673 天

    连续签到: 2 天

    [LV.Master]伴坛终老

    发表于 2013-7-24 19:01:37 | 显示全部楼层
    哈哈,第一眼看题还没看懂
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-11-25 11:05 , Processed in 0.112359 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.