摘要:
以前也碰到过这种类型的题目,以前好像做出来过,但是忘记了,这次又坑了。题目很简单,对于从前到后每一个连续的长度为k的数字,求出这段数字中的最大的数字和最小的数字。一开始我用离散化+树状数组来更新和查询,时间复杂度为n*log(n)*log(n)。这尼玛果断T啊。后来才发现,没那么复杂哦。其实是用一个优先队列来解决问题的。什么意思呢?对于初始状态,我们可以加入k-1个元素,然后每次加一个元素,进行弹出和查询的操作。首先我们创建两个队列,分别用来解决最大值和最小值的问题。这里只需要说明一下最小值的队列就可以了,最大值队列同理。假如当前我们要加入一个新的元素x,我们只需要将x与队尾的元素进行比较,如 阅读全文