题目描述:
给出一个有n(n<=1e6)个数字的序列, 以及一个大小为k(k<=n)的窗口, 这个窗口从最左边开始往右滑动, 每次滑动一个单位, 求这个序列里在这个窗口中的数的最大和最小值
思路:
单调队列的入门题
维护两个单调队列, 一个递增, 一个递减, 分别表示最大值和最小值, 移动窗口前时判断队首是否等于当前最左端值, 如果相等则队首出队
代码:
1 |
|
给出一个有n(n<=1e6)个数字的序列, 以及一个大小为k(k<=n)的窗口, 这个窗口从最左边开始往右滑动, 每次滑动一个单位, 求这个序列里在这个窗口中的数的最大和最小值
单调队列的入门题
维护两个单调队列, 一个递增, 一个递减, 分别表示最大值和最小值, 移动窗口前时判断队首是否等于当前最左端值, 如果相等则队首出队
1 | #include <iostream> |