区别1:
单调栈存数字,单调队列存下标。
区别2:
单调栈入栈的 数字个数不限 ,且栈内最终的存储结果放在二维图看就是:当找到单调下降的点 i ,不断出栈比 i 大的数,再入栈 i ,使得单调栈内的结果始终是单调上升的,但上升曲线的斜率只会越来越小,即趋向于x轴。第一个比目标值小的数是答案,且更新栈。
单调队列是动态的,会有不断入队出队,且 最多只有滑动窗口k个下标 ,但代码中仍不能设队列长度为K+10,不是因为队列长度不止K,而是因为队列数组下标会跟着原数组移动。它只保证当前队列内下标所指的数字是单调的,但随着窗口的移动带来的入队出队以及入队数字大小根据当前队列所需的单调性更新队列,队列的内容最终单调区间之间没有关系。队头是当前窗口最值。