欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

n个整数的无序数组,找到每个元素后面比它大的第一个数

程序员文章站 2024-03-15 18:58:42
...

要求时间复杂度为O(N)

vector<int> findMax(vector<int>num)
{
    if(num.size() == 0) return num;
    vector<int> res(num.size());
    int i = 0;
    stack<int> s;
    while(i < num.size())
    {
        if(s.empty() || num[s.top()] >= num[i])
        {
            s.push(i++);
        }
        else
        {
            res[s.top()] = num[i];
            s.pop();
        }
    }
    while(!s.empty())
    {
        res[s.top()] = INT_MAX;
        s.pop();
    }
    for(int i=0; i<res.size(); i++)
    {
        cout<<res[i]<<endl;
        return res;
    }
}