问题1454--滑动窗口

1454: 滑动窗口

时间限制: 1 Sec  内存限制: 128 MB
提交: 46  解决: 17
[提交] [状态] [讨论版] [命题人:]

题目描述

给你一个长度为N的数组,一个长为K的滑动窗体从最左端移至最右端,你只能看到窗口中的K个数,每次窗体向右移动一位,如下表所示:
窗口位置
最小值
最大值
[ 1 3 -1 ] -3 5 3 6 7
-1
3
1 [ 3 -1 -3 ] 5 3 6 7
-3
3
1 3 [ -1 -3 5 ] 3 6 7
-3
5
1 3 -1 [ -3 5 3 ] 6 7
-3
5
1 3 -1 -3 [ 5 3 6 ] 7
3
6
1 3 -1 -3 5 [ 3 6 7 ]
3
7
你的任务是找出窗体在各个位置时的最大值和最小值。

输入

第一行:两个整数N和K
第二行:N个整数,表示数组的N个元素(<=2×109)。

输出

第一行为滑动窗口从左向右移动到每个位置时的最小值,每个数之间用一个空格分开。
第二行为滑动窗口从左向右移动到每个位置时的最大值,每个数之间用一个空格分开。

样例输入 Copy

8 3
1 3 -1 -3 5 3 6 7

样例输出 Copy

-1 -3 -3 -3 3 3
3 3 5 5 6 7

提示

对于20%的数据,K<=N<=1000。
对于50%的数据,K<=N<=100000。
对于100%的数据,K<=N<=1000000。
思路:
 方法一:朴素算法直接扫描

方法二:线段树或RMQ
方法三:单调队列