我对java (和总体编程)相当陌生,并且从头到尾都收到了实现滑动窗口对象的任务。基本代码如下:
import java.util.Scanner;
//implement class SlidingWindow
class Main {
// this is the test code for the judge, do not modify
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int windowSize = scanner.nextInt();
SlidingWindow window = new SlidingWindow(windowSize);
while (scanner.hasNextInt())
{
int value = scanner.nextInt();
window.Put(value);
System.out.println("[" + window.Min() + " " + window.Max() + "]");
}
scanner.close();
}需要做些什么(以及到目前为止我在解决这个问题上的想法)
很抱歉,这个问题含糊不清--我们从来没有在课堂上讨论过windows (我在几个星期后就学会了任何关于编码的知识),所以我真的很困惑。我已经在网上寻找了一些资源,但还没有找到合适的帮助我的东西。
如果您对如何创建SlidingWindow w有任何想法或建议,我认为这将使我走上正确的轨道!
提前感谢!
发布于 2015-04-10 14:57:52
对于滑动窗口,最简单的可能是插入次数的计数器。如下所示:
class Window{
int ct = 0;
int[] storage;
public Window(int size){
storage = new int[size];
}
public void put(int i){
storage[ct % storage.length] = i;
ct++;
}
}这样,您就可以使用固定大小的数组,并在填充数组后立即用更新的值替换最旧的值,而无需转移内容。
发布于 2016-02-17 15:26:12
我在此提供一个简单而相对简单的解决方案。我给出了两个java文件的代码。
全班:
public class Window {
public void getValue(int[] a, int w){
int t = 0;
for(int i=0;i<a.length;i++){
if(i==a.length-w+1){
break;
}else{
for(int j=i;j<i+w;j++){
if(t<a[j]){
t = a[j];
}
}
}
System.out.println(t);
t = 0;
}
}
}主要方法:
public class MainMethod {
public static void main(String[] args) {
int[] a = new int[]{1, 3, -1, -3, 5, 3, 6, 7};
int w = 3;
Window ob = new Window();
ob.getValue(a, w);
}
}
Answer: 3 3 5 5 6 7我只剩下检查窗口的长度不应该大于数组。
https://stackoverflow.com/questions/29564490
复制相似问题