题目描述
现在我们有一个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
stack<int> st;
st.push(-1);
vector<int> result;
for(int i=A.size()-1;i>=0;i--)
{
while(st.top()!=-1&&st.top()<=A[i])
st.pop();
result.push_back(st.top());
st.push(A[i]);
}
reverse(result.begin(),result.end());
return result;
}
};