数据结构的拓展
学习数据结构课程之后,对常见的基础的线性、树、集合和图都有所了解,但在实际应用中,以及在oj上,这些数据结构可能不够简洁导致不够实用,所以这里记录一下,做一定的拓展。
常用的线性结构是栈与队列,这里我们拓展一下,介绍单调栈、单调队列、线段树,以及给出典型的运用场景。
单调栈与单调队列
什么叫做单调性?
单调性就是指某组数据满足单调递增或者单调递减,一般分为单调递增和单调递减。
具体来说,单调栈是指栈内元素单调的栈,单调队列则是指队列内部元素单调的队列。
如何实现单调栈以及单调队列?
单调栈和单调队列的基础数据结构还是栈与队列,最核心的问题在于如何维护单调性。
- 单调栈的运算实现
单调栈只能从栈顶进行加入和删除,维护单调性主要是在加入时。以单调递增栈为例,