【数据结构】单调栈

时间:2024-02-18 17:44:57

参考:算法学习笔记(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);
}