当前位置: 首页 > news >正文

滑动窗口模板(Java)

题目描述
有一个长为 𝑛 的序列 𝑎,以及一个大小为 𝑘 的窗口。现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值。

例如,对于序列 [1,3,−1,−3,5,3,6,7] 以及 𝑘=3,有如下过程:

输入格式
输入一共有两行,第一行有两个正整数 𝑛,𝑘。 第二行 𝑛 个整数,表示序列 𝑎

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

代码:

package lanqiao;import java.util.*;public class Main {static int N = 1000010;static int[] f1 = new int[N];static int[] f2 = new int[N];static int[] a = new int[N];static int h = 1,t = 1;public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int k = sc.nextInt();for(int i = 1;i <= n;i ++){a[i] = sc.nextInt();}//求最小值f1[1] = 1;for(int i = 1;i <= n;i ++){if(f1[h] <= i - k) h ++;while(t >= h && a[f1[t]] >= a[i]) t --;f1[++t] = i;if(i >= k){System.out.print(a[f1[h]] + " ");}}System.out.println();//求最大值f2[1] = 1;for(int i = 1;i <= n;i ++){if(f2[h] <= i - k) h ++;while(t >= h && a[f2[t]] <= a[i]) t--;f2[++t] = i;if(i >= k){System.out.print(a[f2[h]] + " ");}}}
}

http://www.lryc.cn/news/358368.html

相关文章:

  • transformers.BertTokenizer入门使用
  • 快乐数-力扣
  • Git标签的使用
  • 【uni-app】Pinia 持久化
  • Flink 窗口
  • 基于大模型和RAG技术实现的开源项目
  • mac m1安装homebrew管理工具(brew命令)完整流程
  • Liunx学习随笔
  • mac中文件夹怎么显示.git隐藏文件
  • 【PB案例学习笔记】-13 徒手做个电子时钟
  • Java多线程——线程强制执行
  • 虹科Pico汽车示波器 | 免拆诊断案例 | 2017款奔驰E300L车行驶中发动机偶尔无法加速
  • 华发股份:加强业务协同 新政下项目热销
  • RedHat9网络配置设计
  • HDR视频相关标准-HDR vivid(二)
  • uniapp或微信小程序一些问题解决
  • 最长递增子序列,交错字符串
  • 力扣:344. 反转字符串
  • linux Inodes满导致数据库宕机
  • 【STL】C++ stack(栈) 基本使用
  • 轻量级 K8S 环境 安装minikube
  • 市场巨变,移动开发行业即将迎来“第二春”?
  • DependencyCheck工具使用
  • oracle翻页查询的小坑记录
  • 学习笔记——动态路由协议——OSPF(OSPF基本术语)
  • 子集和问题(回溯法)
  • 【NumPy】全面解析arange函数:高效创建数值范围数组
  • [ C++ ] 深入理解模板( 初 阶 )
  • UI自动化测试最佳设计模式POM
  • 朋友圈定时发送设置