-
題目連結
-
解題思路:
- 題目乍一看沒有思路,那我們來想一想如果暴力求解怎麼辦。最大的矩形,他總有一個高(豎著的),然後有一個寬(橫著的),那我們就暴力求解每一個高,也就是每一個下標i,對應的
heights[i]
,最大的寬是多少,然後求出所有的解後,最優的便是結果。 - 怎麼求解以
heights[i]
為高,最大的寬是多少?用單調棧。單調棧是啥?簡單來說就是,求i左邊,比i「小的,離i最近的」在哪,求i右邊,比i「小的,離i最近的」在哪。(當然,也可以求大的) - 所以,我們就可以得到以
heights[i]
為高,然後得出最大的寬,這就是其中之一的結果。把所有結果得到之後,求最大的那個,就是最終的結果。
- 題目乍一看沒有思路,那我們來想一想如果暴力求解怎麼辦。最大的矩形,他總有一個高(豎著的),然後有一個寬(橫著的),那我們就暴力求解每一個高,也就是每一個下標i,對應的
-
程式碼
class Solution { public: int largestRectangleArea(vector<int>& heights) { stack<int> st; // 棧底到棧頂是小到大 存的是下標 int ans = 0; int n = heights.size(); for (int i = 0; i < n; ++i) { while(!st.empty() && heights[i] < heights[st.top()]) { int wid_right = i; // 寬的右邊界 int wid_left = 0; // 寬的左邊界 int height = heights[st.top()]; // 高 st.pop(); if (!st.empty()) { // 如果棧不為空 它下面壓著的 就是左邊 比他小 離他最近的 wid_left = st.top() + 1; } ans = max(ans, (wid_right - wid_left) * height); } st.push(i); } // 棧不空 while(!st.empty()) { int wid_right = n; // 寬的右邊界 右邊沒有比當前棧頂小的了 int wid_left = 0; // 寬的左邊界 int height = heights[st.top()]; st.pop(); if (!st.empty()) { wid_left = st.top() + 1; } ans = max(ans, (wid_right - wid_left) * height); } return ans; } };
84. 柱狀圖中最大的矩形
相關文章
- LeetCode_84.柱狀圖中最大的矩形LeetCode
- 力扣LCR 039. 柱狀圖中最大的矩形力扣
- 程式碼隨想錄演算法訓練營第六十天|● 84.柱狀圖中最大的矩形演算法
- 程式碼隨想錄演算法訓練營 | 42. 接雨水,84. 柱狀圖中最大的矩形演算法
- 程式碼隨想錄演算法訓練營第55天 | 42. 接雨水 、84.柱狀圖中最大的矩形演算法
- 60天【程式碼隨想錄演算法訓練營34期】第十章 單調棧part03 (84.柱狀圖中最大的矩形)演算法
- 柱狀圖
- 九、柱狀圖和3D柱狀圖3D
- 直方圖中最大矩形直方圖
- 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直方圖
- 柱狀圖、直方圖、散點圖、餅圖講解直方圖
- MPAndroidChart繪製曲線圖、柱狀圖總結Android
- amCharts繪製折線圖和柱狀圖混合
- echarts 柱狀圖 詳解與使用集合Echarts
- CSS3 - vue中純css實現柱狀圖表效果CSSS3Vue
- 【ALGO】Leetcode 85.最大矩形GoLeetCode
- 用Python生成柱狀圖、折線圖、餅狀圖來統計自己的手機話費Python