201312-3(O(n)算法)

2021-03-26 03:24

阅读:612

标签:计算   pop   names   ||   mes   元素   pac   算法   删掉   

#include using namespace std;
//不是递增的话就删掉,然后重新计算一次 
int getMaxArea(vectorint> &vec)
{
    stackint> s;
    int max_area = 0;
    int i=0;
    int tp,area_with_top;
    while(i  vec.size()){
        if(s.empty() || vec[s.top()] //栈是空的时候,或者栈顶元素小于当前vector所出的元素 
        s.push(i++);
        else
        {
            tp = s.top();
            s.pop();
            area_with_top = vec[tp]*(s.empty()? i:i-s.top()-1);
            max_area = max(max_area,area_with_top);
        }
    }
    while(!s.empty())
    {
        tp = s.top();
        s.pop();
        area_with_top = vec[tp] * (s.empty() ? i : i-s.top()-1);
        max_area = max(max_area, area_with_top);
    }
    return max_area;
}
int main(){
    int N;
    vectorint> vec;
    cin>>N;
    for(int i=0;ii)
    {
        int val;
        cin>>val;
        vec.emplace_back(val);
    }
    cout  getMaxArea(vec);
    return 0;
} 

 

201312-3(O(n)算法)

标签:计算   pop   names   ||   mes   元素   pac   算法   删掉   

原文地址:https://www.cnblogs.com/zmachine/p/13721609.html


评论


亲,登录后才可以留言!