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