单调队列-滑动窗口

 

l=0;
 r=0;
 for (int i=1;i<=n;i++)//枚举窗口的尾巴
 {
  while(l<r && q[l]<i-k+1)l++;//踢队首已退休的节点
  while(l<r && a[i]<a[q[r-1]])r--;//踢队尾没有希望的节点
  q[r++]=i;
  if(i>=k) printf("%d ",a[q[l]]);
 }

posted @ 2018-07-09 16:11  yangfengmz  阅读(115)  评论(0)    收藏  举报