![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
基本数据结构
seez
njfu
展开
-
154. 滑动窗口 (单调队列)
题意:移动窗口,求一个窗口中最大值,最小值暴力:如果是暴力来做的话,时间复杂度是O(n),是会超时的,所以应该思考别的办法单调队列:先想想一般的队列怎么做? 哪些点永远不会被用到,可以被删除,维护队列的单调性 优化后的取max,min时间复杂度时O(1)一般队列怎么做?以求min为例先滑动到窗口长度为k,再进行优化发现,如果一个数他比 窗口内 所有左边的数都小,那么左边的数是永远不会被用到的例如,-1比1,3都小,求最小值的时候1,3永远是不会被用到的可以发现:..原创 2022-01-25 09:29:22 · 274 阅读 · 0 评论 -
830. 单调栈
由于每次要输出左边第一个比他小的数,如果不存在输出-1先想想暴力怎么做,然后对暴力优化for(int i=0;i<n;i++) for(int j=i-1;j>=0;j--) if(b[j]<b[i]) break...对暴力的优化就是只保留有用的状态就可以了每次要输出左边第一个比他小的数,我们在遍历到i时,把1~i-1所有数压入栈中,看看哪些是永远不会作为答案输出的,即永远不会被当成左边第一个比某数小的数的每次要找到第一个比他小的数,都是..原创 2022-01-24 23:53:11 · 490 阅读 · 0 评论