CSES - Ikkunat Annettuna on lista, jossa on $n$ lukua. Tehtäväsi on laskea vasemmalta oikealle jokaiselle $k$:n pituiselle alilistalle eli ikkunalle, montako eri lukua se sisältää.

Esimerkiksi kun lista on $[1,2,3,2,2,2]$ ja $k=3$, niin ikkunat ovat $[1,2,3]$, $[2,3,2]$, $[3,2,2]$ ja $[2,2,2]$. Näissä ikkunoissa on $3$, $2$, $2$ ja $1$ eri lukua.

Voit olettaa, että $n$ on enintään $10^5$, jokainen luku on kokonaisluku välillä $1 \dots 10^9$ ja $1 \le k \le n$.

Python

Toteuta tiedostoon windows.py funktio count, joka antaa eri lukujen määrät ikkunoissa.
def count(t,k):
    # TODO

if __name__ == "__main__":
    print(count([1,1,2,2],2)) # [1,2,1]
    print(count([1,1,1,1],4)) # [1]
    print(count([1,2,3,2,2,2],3)) # [3,2,2,1]
Java

Toteuta tiedostoon Windows.java metodi count, joka antaa eri lukujen määrät ikkunoissa.
import java.util.*;

public class Windows {
    public int[] count(int[] t, int k) {
        // TODO
    }

    public static void main(String[] args) {
        Windows w = new Windows();
        System.out.println(Arrays.toString(w.count(new int[] {1,1,2,2}, 2))); // [1,2,1]
        System.out.println(Arrays.toString(w.count(new int[] {1,1,1,1}, 4))); // [1]
        System.out.println(Arrays.toString(w.count(new int[] {1,2,3,2,2,2}, 3))); // [3,2,2,1]
    }
}