参考:算法学习笔记(67): 单调栈
单调栈用来查找比当前元素大的第一个元素(可以修改成比当前元素小的第一个元素)
要注意下方代码中栈中存的是下标不是值
stack<int> stk; // 存的是还没有确定下一个比自身大的元素的元素下标
for (int i = 1; i <= n; i ++ )
{
while (!stk.empty() && a[stk.top()] < a[i]) // 如果找比当前元素小的第一个元素,只需将<换成>
{
ans[stk.top()] = i; // 存的是下一个比自身大的元素的元素下标
stk.pop();
}
stk.push(i);
}