栈和队列
moyangxian
总会过去的
展开
-
单调队列(滑动窗口)
题目: 滑动窗口 给定一个大小为n≤106的数组。 有一个大小为k的滑动窗口,它从数组的最左边移动到最右边。 您只能在窗口中看到k个数字。 每次滑动窗口向右移动一个位置。 以下是一个例子: 该数组为[1 3 -1 -3 5 3 6 7],k为3。 窗口位置 最小值 最大值 [1 3 -1] -3 5 3 6 7 -1 3 1 [3 -1 -3] 5 3 6 7 -3 3 1 3 [-1 -3 5]...原创 2020-04-01 16:37:49 · 119 阅读 · 0 评论 -
单调栈
模板 模板来自AcWing 常见模型:找出每个数左边离它最近的比它大/小的数 int tt = 0; for (int i = 1; i <= n; i ++ ) { while (tt && check(stk[tt], i)) tt -- ; stk[ ++ tt] = i; } 题目: 单调栈 给定一个长度为N的整数数列,输出每个数左边第一个比它小的数...原创 2020-03-31 17:28:33 · 84 阅读 · 0 评论 -
栈和队列
模拟栈模板(先进后出) 模板来自AcWing // tt表示栈顶 int stk[N], tt = 0; // 向栈顶插入一个数 stk[ ++ tt] = x; // 从栈顶弹出一个数 tt -- ; // 栈顶的值 stk[tt]; // 判断栈是否为空 if (tt > 0) { } 模拟队列(先进先出) 模板来自AcWing // hh 表示队头,tt表示队尾 int q...原创 2020-03-31 17:02:02 · 124 阅读 · 0 评论