博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
滑动窗口
阅读量:4356 次
发布时间:2019-06-07

本文共 1406 字,大约阅读时间需要 4 分钟。

题目描述

现在有一堆数字共N个数字(N<=10^6),以及一个大小为k的窗口。现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值。

例如:

The array is [1 3 -1 -3 5 3 6 7], and k = 3.

输入格式

输入一共有两行,第一行为n,k。

第二行为n个数(<INT_MAX).

输出格式

输出共两行,第一行为每次窗口滑动的最小值

第二行为每次窗口滑动的最大值

输入输出样例

输入 #1复制
8 31 3 -1 -3 5 3 6 7
输出 #1复制
-1 -3 -3 -3 3 33 3 5 5 6 7

说明/提示

50%的数据,n<=10^5

100%的数据,n<=10^6

 

 

大模拟。。。。。。

 

#include
using namespace std;int n,k,a[1000005],i,j,ans1=-2147483647,ans2=2147483647;struct node{ int x,y;}f[1000005];inline int read(){ int s=0,w=1; char ch=getchar(); while(ch<'0'||ch>'9'){ if(ch=='-'){ w=-1; } ch=getchar(); } while(ch>='0'&&ch<='9'){ s=s*10+ch-'0'; ch=getchar(); } return s*w;}int main(){ int r=0; n=read(); k=read(); for(i=1;i<=n;i++){ a[i]=read(); } if(k>=n){ for(i=1;i<=n;i++){ if(a[i]>ans1){ ans1=a[i]; } if(a[i]
ans1){ ans1=a[i]; } if(a[i]
f[r].y){ f[r].y=a[j]; } } } if(a[i+k-1]
f[r].y){ f[r].y=a[i+k-1]; } } for(i=1;i<=r;i++){ printf("%d ",f[i].x); } printf("\n"); for(i=1;i<=r;i++){ printf("%d ",f[i].y); } return 0;}

 

转载于:https://www.cnblogs.com/hrj1/p/11223363.html

你可能感兴趣的文章
WEB DYNPRO SAP HELP
查看>>
MYSQL 查询指定日期后的15天
查看>>
js实现农历时间代码
查看>>
ACM比赛(进制转换)
查看>>
Hadoop详细配置教程
查看>>
基于Web的数据推送技术(转)
查看>>
Memcached深度分析(转)
查看>>
svn向服务器添加新建文件夹
查看>>
大神解答:如何实现域账号免登陆流程平台的功能
查看>>
HTTP与HTTPS
查看>>
Java操作FTP
查看>>
application下的JDBC操作
查看>>
iphone UI 开发教程
查看>>
解决ASP因为编码问题出现乱码现象:ASP中强制编码方式
查看>>
微信小程序 - 获取所在位置(省、市、区)
查看>>
PHP高级教程-Data
查看>>
POJ-1988-Cube_Stacking-并查集
查看>>
Qapp使用总结
查看>>
Delphi操作XML:函数详解(一)
查看>>
网盘搜索网站汇总
查看>>