AcWing 154. 滑动窗口——Java
原题链接
简单
作者:
cyb-包子
,
2020-05-25 23:02:56
,
所有人可见
,
阅读 1055
分析
代码
package Chapter2;
import java.io.IOException;
/**
*
* P154 滑动窗口
* @author vccyb
*
*/
import java.io.*;
import java.util.*;
public class P154 {
//1. 定义队列
private static final int N = 1000010;
private static int[] q = new int[N];
private static int[] arr = new int[N];
private static int hh = 0, tt = -1;//队头和队尾
public static void main(String[] args) throws IOException {
BufferedReader br =new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String[] line1 = br.readLine().split(" ");
int n = Integer.parseInt(line1[0]); // 数组长度
int m = Integer.parseInt(line1[1]); // 滑动窗口长度
String[] line2 = br.readLine().split(" ");
for(int i=0;i<n;i++){
arr[i] = Integer.parseInt(line2[i]);
}
//1. 求解最小值、那么队列存取升序
//q[]中存储的是坐标
for(int i=0;i<n;i++){
//滑出了,从对头出队
//k=3 i=0,1,2 3划出
if(hh<=tt&&i-m+1>q[hh]){
hh++;
}
//保证升序
while(hh<=tt&&arr[q[tt]]>=arr[i]){
tt--;
}
//存入坐标
q[++tt] = i;
if(i+1>=m){
bw.write(arr[q[hh]]+" ");
}
}
bw.write("\n");
//求解最大值,保证降序
hh=0;
tt=-1;
for(int i=0;i<n;i++){
//滑出
if(hh<=tt&&i-m+1>q[hh]){
hh++;
}
//最大值,降序
while(hh<=tt&&arr[q[tt]]<arr[i]){
tt--;
}
q[++tt] = i;
if(i+1>=m){
bw.write(arr[q[hh]]+" ");
}
}
bw.flush();
br.close();
bw.close();
}
}
Non Zero Exit Code 请问您执行这个代码的时候遇到相似的问题了嘛,我这边执行您的代码一直报这样的错
你可以试试刷新下
要把类名改成Main, 包信息package Chapter2;删除就好了