试图做滑动窗口

时间:2015-09-13 04:55:59

标签: java algorithm

我试图像滑动窗口一样打印。我无法做对。因此,当滑动窗口大小为1时,它应该打印每个元素。当滑动窗口为2时,它应该打印两个连续的元素。

0
1
2

01
12

0123

请检查此代码:

for(int w = 1; w <= a.length; w++) {    
    System.out.println("Window size : " + w);
    for(int i = 0; i < a.length; i++) {
        for(int j = i; j < w; j++) {
            System.out.println(j);
        }
        System.out.println();
    }
}   

2 个答案:

答案 0 :(得分:5)

  1. 你还没有计算出没有。对于特定的窗口大小,将出现窗口。

  2. 当您打印该窗口的值时,您给出的条件是j小于w。它循环窗口大小次数或w次。因此,对于窗口大小1,它将仅打印1个窗口大小为1的元素。对于窗口大小2,它将打印2个窗口大小为2的元素。但是还有其他元素。

  3. 您的模式代码:

    public class WindowPattern {
    
        public static void main(String[] args) {
            /* array of elements */
            int[] a = {0,1,2,3};
            /* window size w */
            for(int w = 1; w <= a.length; w++) { 
                System.out.println("Window size : " + w);
                /* No of elements shown of window size (n) = a.length-w+1 */
                for(int i = 0; i < a.length-w+1; i++) {
                    for(int j = i; j < w+i; j++) {
                        System.out.print(a[j]);
                    }
                    System.out.println();
                }
            }   
        }
    
    }
    

答案 1 :(得分:2)

for(int w = 1; w <= a.length; w++){ 
    System.out.println("Window size : " + w);
    for(int i = 0; i < a.length - w + 1; i++){
        for(int j = i; j < i + w; j++){
                System.out.print(a[j]);
        }
        System.out.println();
    }
}