柱状图中最大的矩形—leetcode84
生活随笔
收集整理的這篇文章主要介紹了
柱状图中最大的矩形—leetcode84
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
給定?n?個非負整數,用來表示柱狀圖中各個柱子的高度。每個柱子彼此相鄰,且寬度為 1 。
求在該柱狀圖中,能夠勾勒出來的矩形的最大面積。
?
以上是柱狀圖的示例,其中每個柱子的寬度為 1,給定的高度為?[2,1,5,6,2,3]。
?
圖中陰影部分為所能勾勒出的最大矩形面積,其面積為?10?個單位。
示例:
輸入: [2,1,5,6,2,3] 輸出: 10?
思路:用二分法,不過普通的二分法leetcode會超時,所以增加了一個標志位判斷是否[left,right]都是遞增的,如果是遞增的就直接返回,不用繼續二分了,節省了時間。?
class Solution { public:int largestRectangleArea(vector<int>& heights) {return get_maxval(0, heights.size()-1, heights);}int get_maxval(int left,int right,vector<int>& heights){if(left>right){return 0;}int min_index = left;bool increase = true;for(int i=left+1;i<=right;++i){if(heights[i-1]>heights[i]){increase = false;}if(heights[i]<heights[min_index]){min_index = i;}}if(increase){int maxval = 0;for(int i=left;i<=right;++i){maxval = max((right-i+1)*heights[i],maxval);}return maxval;}return max(heights[min_index]*(right-left+1), max(get_maxval(left,min_index-1,heights),get_maxval(min_index+1,right,heights)));} };?
總結
以上是生活随笔為你收集整理的柱状图中最大的矩形—leetcode84的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 子集—leetcode78
- 下一篇: 单词搜索—leetcode79