国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

84. Largest Rectangle in Histogram

melody_lql / 3458人閱讀

摘要:要求一個(gè)矩形的面積,要知道高和寬。如果每次確定高度為然后調(diào)用一個(gè)找到左右邊界,即不小于的最左和最右。這是一個(gè)明顯的算法,每次掃描都會(huì)重走整個(gè)。一個(gè)遞增序列這種,我們知道可以夠成的矩形是會(huì)不斷增大的。遞增序列預(yù)處理,遞減的時(shí)候計(jì)算。

For example,
Given heights = [2,1,5,6,2,3],
return 10
要求一個(gè)矩形的面積,要知道高和寬。
如果每次確定高度為height[i], 然后調(diào)用一個(gè)helper function找到左右邊界,即不小于height[i]的最左和最右。
這是一個(gè)明顯O(N^2)的算法,每次掃描都會(huì)重走整個(gè)array。
這里有些步驟是不必要的,比如高度為2往左掃的時(shí)候已經(jīng)知道2>1了,然當(dāng)高度為1的時(shí)候,不必往左走,我們可以通過空間來記憶已知信息。
一個(gè)遞增序列156這種,我們知道可以夠成的矩形是會(huì)不斷增大的。而當(dāng)1562,遇到2的時(shí)候矩形可能變小,這時(shí)我們就要計(jì)算面積了。
遞增序列預(yù)處理,遞減的時(shí)候計(jì)算。
用代碼打印出每步的結(jié)果。
height : 0 left :0 right : 1 cur 2 area : 2
height : 3 left :3 right : 4 cur 6 area : 6
height : 2 left :2 right : 4 cur 10 area : 10
height : 5 left :5 right : 6 cur 3 area : 10
height : 4 left :2 right : 6 cur 8 area : 10
height : 1 left :0 right : 6 cur 6 area : 10
public class Solution {
    public int largestRectangleArea(int[] heights) {
        Stack stk = new Stack<>();
        int area = 0;
        for(int i=0; i<= heights.length; i++){
            int h = i == heights.length ? 0 : heights[i];
            if(stk.isEmpty() || h >= heights[stk.peek()]){
                stk.push(i);
            } else {
                int top = stk.pop();
                // 為什么用stk.peek()+1, 因?yàn)檫@里stack里存的可能不連續(xù)。
                area = Math.max(area, heights[top]*(stk.isEmpty()? i: i-(stk.peek()+1)));
                i--;
            }
        }
        return area;
    }

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/66942.html

相關(guān)文章

  • [LeetCode] 84. Largest Rectangle in Histogram

    Problem Given n non-negative integers representing the histograms bar height where the width of each bar is 1, find the area of largest rectangle in the histogram. showImg(https://segmentfault.com/img...

    BaronZhang 評(píng)論0 收藏0
  • leetcode84. Largest Rectangle in Histogram

    摘要:題目要求即找到圖中可以組合而成的面積最大的矩形。從而我們可以知道該矩形在水平方向上的最大擴(kuò)展程度。也就是說,棧中數(shù)據(jù)記錄了最遠(yuǎn)左側(cè)下標(biāo),而當(dāng)前的矩形則是最遠(yuǎn)右側(cè)下標(biāo)。當(dāng)我們不采用數(shù)據(jù)結(jié)構(gòu)時(shí),尋找和計(jì)算的過程需要的時(shí)間復(fù)雜度。 題目要求 Given n non-negative integers representing the histograms bar height where t...

    Harpsichord1207 評(píng)論0 收藏0
  • [Leetcode] Largest Rectangle (in Histogram) 最大矩形

    摘要:以此類推,如果一直到棧為空時(shí),說明剛出來的豎條之前的所有豎條都比它自己高,不然不可能棧為空,那我們以左邊全部的寬度作為長(zhǎng)方形的寬度。 Largest Rectangle in Histogram Given n non-negative integers representing the histograms bar height where the width of each bar...

    鄒強(qiáng) 評(píng)論0 收藏0
  • [LintCode] Largest Rectangle in Histogram

    摘要:只要出現(xiàn)當(dāng)前右邊界高度小于等于棧頂元素高度的情況,就取出棧頂元素當(dāng)前遍歷過最高的并對(duì)這個(gè)元素進(jìn)行取最大矩形的運(yùn)算。 Problem Given n non-negative integers representing the histograms bar height where the width of each bar is 1, find the area of largest ...

    alighters 評(píng)論0 收藏0
  • Largest Rectangle in Histogram

    摘要:而最大的矩形一定滿足兩個(gè)邊界的高度小于該矩形的高度這個(gè)條件如果不滿足的話,邊界也可以被添加進(jìn)來計(jì)算而不破壞矩形的形狀,此時(shí)不為最大,因此找出所有這樣的矩形就一定可以在其中找出面積最大的矩形。 Problem Given n non-negative integers representing the histograms bar height where the width of e...

    vvpvvp 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<