- 超时解法
- 算法复杂度O(n^2)
class Solution {
public:
int largestRectangleArea(vector<int>& heights) {
if (heights.size() == 0) return 0;
int res = heights[0];
for (int i = 0; i < heights.size(); i ++) {
# 出事化的时候,保证每个元素都是有意义的,而不是随便的填充0
int min_height = heights[i];
int tmp = heights[i];
# 第二层循环从当前元素开始
for (int j = i; j < heights.size(); j++) {
# 不断的寻找最小值,根据短板原理,最小的那个值决定了长方形的面积。
min_height = min(heights[j], min_height);
# 不断的更新一个最大值
tmp = max(tmp, (j-i+1)*min_height);
}
# 更新最终结果
res = max(tmp, res);
}
return res;
}
};