首页 > 其他 > 详细

LeetCode – Refresh – Largest Rectangle in Histogram

时间:2015-03-20 08:01:43      阅读:323      评论:0      收藏:0      [点我收藏+]

Use two vector to record left and right indexes that can extend the blocks.

 

 1 class Solution {
 2 public:
 3     int largestRectangleArea(vector<int> &height) {
 4         int len = height.size(), result = 0;
 5         vector<int> left(len), right(len);
 6         for (int i = 0; i < len; i++) {
 7             left[i] = i;
 8             while (left[i] > 0 && height[i] <= height[left[i]-1]) left[i] = left[left[i]-1];
 9         }
10         for (int i = len-1; i >= 0; i--) {
11             right[i] = i;
12             while (right[i] < len-1 && height[i] <= height[right[i]+1]) right[i] = right[right[i]+1];
13         }
14         for (int i = 0; i < len; i++) {
15             result = max(result, height[i] * (right[i] - left[i] + 1));
16         }
17         return result;
18     }
19 };

 

LeetCode – Refresh – Largest Rectangle in Histogram

原文:http://www.cnblogs.com/shuashuashua/p/4352662.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!