下一个较大的元素

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/iov3Rain/article/details/90244575

题目描述

现在我们有一个int数组,请你找出数组中每个元素的下一个比它大的元素。

给定一个int数组A及数组的大小n,请返回一个int数组,代表每个元素比他大的下一个元素,若不存在则为-1。保证数组中元素均为正整数。

测试样例:

[11,13,10,5,12,21,3],7

返回:[13,21,12,12,21,-1,-1]

栈的运用

class NextElement {
public:
    vector<int> findNext(vector<int> A, int n) 
    {
        // write code here
        vector<int> res(n, -1);
        stack<int> s;
        for(int i = 0; i < n; ++i)
        {
            if(s.empty() || A[s.top()] > A[i])
            {
                s.push(i);
            }
            else
            {
                while(!s.empty() && A[s.top()] < A[i])
                {
                    res[s.top()] = A[i];
                    s.pop();
                }
                s.push(i);
            }
        }
        return res;
    }
};

猜你喜欢

转载自blog.csdn.net/iov3Rain/article/details/90244575