日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LeetCode 84. 柱状图中最大的矩形(单调递增栈)

發布時間:2024/7/5 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode 84. 柱状图中最大的矩形(单调递增栈) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 1. 題目
    • 2. 解題

1. 題目

題目鏈接
給定 n 個非負整數,用來表示柱狀圖中各個柱子的高度。每個柱子彼此相鄰,且寬度為 1 。

求在該柱狀圖中,能夠勾勒出來的矩形的最大面積。


以上是柱狀圖的示例,其中每個柱子的寬度為 1,給定的高度為 [2,1,5,6,2,3]。
圖中陰影部分為所能勾勒出的最大矩形面積,其面積為 10 個單位。

2. 解題

類似題目:
LeetCode 11. 盛最多水的容器(雙指針)
LeetCode 42. 接雨水(雙指針、單調棧)
LeetCode 85. 最大矩形(DP,難)

  • 單調遞增棧,遇到遞減的進行處理,最后未處理完的,在末尾加個0(遇到遞減了,處理剩余的)
  • 棧內左側的都比棧頂小,當前的也比其小,那么以棧頂為高的矩形能夠擴展的寬度就知道了,寬度 = 當前位置 減去 棧頂左側位置,再減1
class Solution { public:int largestRectangleArea(vector<int>& h) {h.push_back(0);int i, n = h.size(), maxArea = 0, prevH, width;stack<int> s;//單調遞增棧,存儲下標for(i = 0; i < h.size(); ++i){while(!s.empty() && h[s.top()] > h[i])//前面大于我的,遇到下降{prevH = h[s.top()];s.pop();width = (s.empty() ? i : i-s.top()-1);maxArea = max(maxArea, prevH*width);}s.push(i);}return maxArea;} };

20 ms 8.7 MB

總結

以上是生活随笔為你收集整理的LeetCode 84. 柱状图中最大的矩形(单调递增栈)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。