题解 | #生成窗口最大值数组#
生成窗口最大值数组
https://www.nowcoder.com/practice/b316c7f9617744b98fa311ae29ac516c
#include <iostream> #include<deque> using namespace std; deque<int>q; int main() { int n,m; int a[1000001]; cin>>n>>m; for(int i=1;i<=n;i++) cin>>a[i]; for(int i=1;i<=n;i++) { while(!q.empty()&&a[q.back()]<a[i]) q.pop_back(); q.push_back(i); if(i>=m){ while(!q.empty()&&q.front()<=i-m) q.pop_front(); cout<<a[q.front()]<<" "; } } } // 64 位输出请用 printf("%lld")