这两天主要学习了一下单调队列,研究了一下课件中单调队列的例题,并把训练二中单调队列的题目都给刷了。单调队列的算法并没有什么难度,难点就在于如何单调队列与相应的题目结合起来,不同的题目需要求的解也是不同的,其难点就相当于如何将题目所求的解如何单调队列表示出来。
其次从网上看了一下单调栈的基本知识以及相关算法,单调栈具有如下性质:
1.单调栈里的元素具有单调性。
2.元素加入栈前,会在栈顶端把破坏栈单调性的元素都删除。
3.所有元素只会进栈一次,并且出栈后再也不会进栈了。
4.使用单调栈可以找到元素向左遍历的第一个比他小的元素,也可以找到向左遍历第一个比他大的元素。
单调队列跟单调栈的主要区别为:单调队列队首跟队尾都可以进行出队操作,虽然入队操作只能在队尾进行;但是单调栈的入队跟出队操作只能在栈顶进行。