单调队列通常是具备单调性的队列废话数组
视具体题目而定,单调队列有单调递增和单调递减两种,通常来说,队列的队首是整个队列的最大值或最小值优化
单调队列能够解决许多问题,并且能够用来优化DP,可是这里不讲由于我还不会‘spa
下面简单的介绍一下单调队列的实现code
具体步骤:blog
实现通常采用双端队列主要由于好写固然也能够本身手写队列
下面放出代码io
1 if(q.empty()) 2 q.push_back(A[i]); 3 else if(q.back()>A[i]){ 4 while((!q.empty())&&q.back()>A[i]){ 5 q.pop_back(); 6 } 7 q.push_back(A[i]); 8 } 9 else 10 q.push_back(A[i]);
优美简洁class
单调队列有许多做用:di
好比能够求出一个数组内第一个大于等于一个数x的数while
也能够经过维护单调性,解决一些区间内最小或最大的问题
总之单调队列的应用在根本上要视题目而定的灵活运用
本质上并不复杂