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

找出数组中每个数的右边第一个比它大的数

程序员文章站 2024-03-15 19:11:54
...
#include <bits/stdc++.h>

using namespace std;
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;
}
int main()
{
    vector<int>p(9);
    for(int i=0; i<p.size(); i++)
        p[i]=i%3;
    findMax(p);
    return 0;
}

相关标签: 算法