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] } }