第一次想的時候,想到了動態規劃,但是還有乙個複雜度更低的方法,就是採用棧的方式。第二種方法是看了厲害的人的部落格之後才理解的。它的思想就是從後往前遍歷,使用棧儲存當前遍歷到的最小值,這個值是不斷更改的,同時,沒遍歷一次,計算一次當前的面積。
在做leetcode的時候發現,從後往前遍歷的題目有很多,巧妙的使用棧的結構的方法也有很多,這就需要自己慢慢的在做題的過程中,慢慢的理解掌握了。
**比較醜陋,還望大家多提建議。
1//動態規劃,但是超時了
2int largestrectanglearea(vector&heights)
15result.push_back(temp);
16for(i=1;i)
27result.push_back(temp);28}
29return result[heights.size()-1][heights.size()-1
];30 }
1//使用棧的方法
2int largestrectanglearea(vector&heights)
19while(count-->0)22}
23}24 count=1;25
while(!st.empty())
32return
result;
33 }
最大矩形面積
題目描述 地面上從左到右併排緊挨著擺放多個矩形,已知這此矩形的底邊寬度都為1,高度不完全相等。求在這些矩形包括的範圍內能得到的面積最大的矩形,列印出該面積。所求矩形可以橫跨多個矩形,但不能超出原有矩形所確定的範圍。如 n 7,序列為2 1 4 5 1 3 3 h h h h h h h h 最大面積...
最大矩形面積
地面上從左到右併排緊挨著擺放多個矩形,已知這此矩形的底邊寬度都為1,高度不完全相等。求在這些矩形包括的範圍內能得到的面積最大的矩形,列印出該面積。所求矩形可以橫跨多個矩形,但不能超出原有矩形所確定的範圍。如 n 7,序列為2 1 4 5 1 3 3 h h h h h h h h 最大面積 8 輸入...
48 最大矩形面積
地面上從左到右併排緊挨著擺放多個矩形,已知這此矩形的底邊寬度都為1,高度不完全相等。求在這些矩形包括的範圍內能得到的面積最大的矩形,列印出該面積。所求矩形可以橫跨多個矩形,但不能超出原有矩形所確定的範圍。如 n 7,序列為2 1 4 5 1 3 3 h h h h h h h h 最大面積 8 輸入...