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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

柱状图中最大的矩形—leetcode84

發(fā)布時(shí)間:2024/4/18 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 柱状图中最大的矩形—leetcode84 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

給定?n?個(gè)非負(fù)整數(shù),用來表示柱狀圖中各個(gè)柱子的高度。每個(gè)柱子彼此相鄰,且寬度為 1 。

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

?

以上是柱狀圖的示例,其中每個(gè)柱子的寬度為 1,給定的高度為?[2,1,5,6,2,3]。

?

圖中陰影部分為所能勾勒出的最大矩形面積,其面積為?10?個(gè)單位。

示例:

輸入: [2,1,5,6,2,3] 輸出: 10

?

思路:用二分法,不過普通的二分法leetcode會(huì)超時(shí),所以增加了一個(gè)標(biāo)志位判斷是否[left,right]都是遞增的,如果是遞增的就直接返回,不用繼續(xù)二分了,節(jié)省了時(shí)間。?

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)));} };

?

總結(jié)

以上是生活随笔為你收集整理的柱状图中最大的矩形—leetcode84的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。