什么是滑动窗口algorithm? 例子?

在解决几何问题的同时,我遇到了一种称为滑动窗口algorithm的方法。

无法find任何研究材料/细节。

algorithm是什么?

一般来说,滑动窗口是运行在底层集合上的子列表。 也就是说,如果你有一个数组

[abcdefgh] 

一个大小为3的滑动窗口就会像这样跑过去

 [abc] [bcd] [cde] [def] [efg] [fgh] 

例如,如果您想要计算运行平均值,或者您想要创build一组所有相邻的对,则这很有用。

这是大小为n的数组的滑动窗口协议的代码,其中k个数的总和一起存储在另一个数组sum中。以下代码是Java中的代码。

 import java.io.*; class deva { public static void main(String args[])throws IOException { BufferedReader in=new BufferedReader(new InputStreamReader(System.in)); int n=Integer.parseInt(in.readLine()); int[] a = new int[n]; for(int i=0;i<n;i++) a[i]=Integer.parseInt(in.readLine()); int k=Integer.parseInt(in.readLine()); int[] sum = new int[n-k+1]; for(int i=0;i<k;i++) sum[0]+=a[i]; System.out.println(sum[0]); for(int i=1;i<n-k+1;i++) { sum[i]=sum[i-1]+a[i+k-1]-a[i-1]; System.out.println(sum[i]); } } }