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

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();
    }
    return res;
}

猜你喜欢

转载自blog.csdn.net/chen134225/article/details/81783742
今日推荐