下一个较大的元素

时间:2019-05-15
本文章向大家介绍下一个较大的元素,主要包括下一个较大的元素使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

题目描述

现在我们有一个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;
    }
};

 

$flag 上一页 下一页