LeetCode_84.柱狀圖中最大的矩形
題目:
給定 n 個非負整數,用來表示柱狀圖中各個柱子的高度。每個柱子彼此相鄰,且寬度為 1 。
求在該柱狀圖中,能夠勾勒出來的矩形的最大面積。
以上是柱狀圖的示例,其中每個柱子的寬度為 1,給定的高度為 [2,1,5,6,2,3]。
圖中陰影部分為所能勾勒出的最大矩形面積,其面積為 10 個單位。
示例:
輸入: [2,1,5,6,2,3]
輸出: 10
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/largest-rectangle-in-histogram
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。
解法一:窮舉法:
所謂“窮舉法”(暴力法),就是列舉一個問題的所有場景,從中選出最大、最小值。例如此題求最大矩形面積,因為矩形面積=高*底,所以窮舉法就要固定其中之一,遍歷另一個變數的值。固定底不太容易實現,所以採用固定高度,然後找到最大底邊的方法。
時間複雜度: O(n^2)
空間複雜度: O(1)
class Solution {
public:
int largestRectangleArea(vector<int>& heights) {
int maxArea = 0;
for(int i = 0; i < heights.size(); ++i) { //列舉高度,左右擴散確定底邊
int left = i, right = i;
while(left >= 0 && heights[left] >= heights[i]) --left;
while(right < heights.size() && heights[right] >= heights[i]) ++right;
maxArea = max(maxArea, heights[i] * (right - left - 1));
}
return maxArea;
}
};
方法二:單調遞增棧:
方法三:單調遞增棧 + 哨兵:
相關文章
- 84. 柱狀圖中最大的矩形
- 力扣LCR 039. 柱狀圖中最大的矩形力扣
- 程式碼隨想錄演算法訓練營第六十天|● 84.柱狀圖中最大的矩形演算法
- 程式碼隨想錄演算法訓練營 | 42. 接雨水,84. 柱狀圖中最大的矩形演算法
- 柱狀圖
- 九、柱狀圖和3D柱狀圖3D
- 直方圖中最大矩形直方圖
- 程式碼隨想錄演算法訓練營第55天 | 42. 接雨水 、84.柱狀圖中最大的矩形演算法
- PyQtGraph之柱狀圖QT
- oracle 柱狀圖(Histograms)OracleHistogram
- 資料視覺化:圖表篇(1)—— 基本柱狀圖、堆疊柱狀圖視覺化
- 【matplotlib 實戰】--柱狀圖
- Echarts立體柱狀圖Echarts
- JavaScript介面畫柱狀圖JavaScript
- R繪圖(06)——帶errorbar的柱狀圖繪圖ErrorORB
- Echarts根據資料長度變換柱狀圖柱狀的顏色Echarts
- Quart2D 畫圖二 (餅狀圖、柱狀圖)
- Echarts 柱狀圖配置詳解Echarts
- 垂直柱狀圖(模擬+字串)字串
- leetcode:求直方圖構成的矩形最大面積LeetCode直方圖
- 最大加權矩形
- canvas帶有座標的柱狀圖效果Canvas
- Android 自定義帶動畫的柱狀圖Android動畫
- 繪製帶誤差分析的柱狀圖
- echarts 設定柱狀圖寬度Echarts
- 柱狀圖與執行計劃
- echarts 柱狀圖如何橫向展示Echarts
- 使用 Flutter 繪製圖表(一)柱狀圖?Flutter
- 在Report Builder 3.0中生成柱狀圖和折線圖NUUI
- python-資料分析-Matplotlib-1-基礎圖形(曲線圖-散點-柱狀-堆疊柱狀-餅狀圖-直方圖)Python直方圖
- 60天【程式碼隨想錄演算法訓練營34期】第十章 單調棧part03 (84.柱狀圖中最大的矩形)演算法
- 柱狀圖、直方圖、散點圖、餅圖講解直方圖
- MPAndroidChart繪製曲線圖、柱狀圖總結Android
- amCharts繪製折線圖和柱狀圖混合
- echarts 柱狀圖 詳解與使用集合Echarts
- CSS3 - vue中純css實現柱狀圖表效果CSSS3Vue
- 【ALGO】Leetcode 85.最大矩形GoLeetCode
- 用Python生成柱狀圖、折線圖、餅狀圖來統計自己的手機話費Python