单调栈常用于解决一些数组或序列相关的问题,如找到下一个更大元素、下一个更小元素。 模板奉上: 第一种使用stack stack<int> st; // 单调栈,存储元素的下标nums[n]=-1; //多加一个-1元素,防止到最后栈中还是单调递增栈,未能更新最大值//单调递减栈就是nums[n]=0x3f3f3f;for (int i = 0; i <...
using namespace std; #include<stack> int main() { //定义单调栈st stack<int>st; //输入元素个数 int n; cin >> n; for (int i = 0; i < n; i++) { int x; cin >> x; //当前元素小于等于栈顶元素,出栈 while (!st.empty()&&st.top() >= x)//单调增取反 { st.pop(); }...
木板灌水问题(单调栈) 题意:地上从左到右竖立着N块木板,从1到n依次编号,如下图所示。我们知道每块木板的高度,在第n块模板右侧竖立着一块高度无限大的木板,现在对每块木板依次执行如下操作:对于第i块木板,我们从其右侧开始倒水,直到水的高度等于第i块木板的高度,倒入的水淹没ai块木板(如果木板左右两侧水的高度...
【模板】单调栈,上面的题目和该题目返回的结果不一致,该题返回的时索引,上题返回的是数值 ©著作权归作者所有,转载或内容合作请联系作者 Algorithm 更多精彩内容,就在简书APP "小礼物走一走,来简书关注我" 赞赏支持还没有人赞赏,支持一下 白不摆一个想进入大厂的小白!
模板奉上: 第一种使用stack 代码语言:javascript 复制 stack<int> st; // 单调栈,存储元素的下标 nums[n]=-1; //多加一个-1元素,防止到最后栈中还是单调递增栈,未能更新最大值 //单调递减栈就是nums[n]=0x3f3f3f; for (int i = 0; i < n; i++) { while (!st.empty() && nums[i] <...