有关滑动窗口的暴力解法
作者:
馄炖大稀粥
,
2022-06-27 18:30:45
,
所有人可见
,
阅读 238
using namespace std;
const int N = 1000010;
int a[N], q[N];
int n,k,tt,hh;
//核心窗口长度并没有改变,代表了i之前的k个数,但是并不是把这k个元素都拿来比较
int main(){
cin >> n >> k;
for(int i = 0 ; i < n ; i ++ ) cin >> a[i];
tt = -1, hh = 0;
for(int i = 0 ; i < n ; i ++)
{
tt++;
q[tt] = i;
if(tt >= hh && i - q[hh] + 1 > k)
hh++;
int min1 = a[q[hh]];
for(int j = hh ; j <= tt ; j++ )
{
min1 = min(min1,a[q[j]]) ;
}
if( i >= k - 1)
cout<<min1<<" ";
}
cout << endl;
tt = -1, hh = 0;
for(int i = 0 ; i < n ; i ++)
{
tt++;
q[tt] = i;
if(tt >= hh && i - q[hh] + 1 > k)
hh++;
int max1 = a[q[hh]];
for(int j = hh ; j <= tt ; j++ )
{
max1 = max(max1,a[q[j]]) ;
}
if( i >= k - 1)
cout<<min1<<" ";
}
}