leetcode 84:柱状图中最大的矩形

每次以第i个值为高的最大值,然后取最大值

以第i个值为高的最大值的计算:  [i]后面的值大于它时  最大值加上一个[i],小于它时跳出,它前面的值做同样的处理

想法简单,时间复杂度比较高

int largestRectangleArea(std::vector<int>& heights) {
    if(heights.size()==0)
        return 0;
    int max=0;
    for(int i=0;i<heights.size();i++){
        int c=heights[i];
        for(int j=i+1;j<heights.size();j++){
            if(heights[i]>heights[j])
                break;
            else if(heights[i]<=heights[j])
                c=c+heights[i];
        }
        for(int j=i-1;j>=0;j--){
            if(heights[i]>heights[j])
                break;
            else if(heights[i]<=heights[j])
                c=c+heights[i];
        }
        if(c>max)
            max=c;
    }
    return max;
}

猜你喜欢

转载自blog.csdn.net/u013263891/article/details/84963053