Annettuna on lista, jossa on n eri kokonaislukua. Tehtäväsi on selvittää, mikä on k:nneksi pienin kahden luvun etäisyys, kun tarkastellaan kaikkia mahdollisia lukupareja.
Esimerkiksi kun lista on [4,1,5,2], etäisyydet ovat seuraavat pienimmästä suurimpaan:
- lukujen 1 ja 2 etäisyys on 1
- lukujen 4 ja 5 etäisyys on 1
- lukujen 2 ja 4 etäisyys on 2
- lukujen 1 ja 4 etäisyys on 3
- lukujen 2 ja 5 etäisyys on 3
- lukujen 1 ja 5 etäisyys on 4
Voit olettaa, että n on enintään 10^5, jokainen luku on välillä 1 \dots 10^9 ja k on enintään 10^5.
Python
Toteuta tiedostoon distances.py
funktio find
, joka palauttaa halutun etäisyyden.
def find(t, k): # TODO if __name__ == "__main__": t = [4,1,5,2] print(find(t,1)) # 1 print(find(t,2)) # 1 print(find(t,3)) # 2 print(find(t,4)) # 3 print(find(t,5)) # 3 print(find(t,6)) # 4
Java
Toteuta tiedostoon Distances.java
metodi find
, joka palauttaa halutun etäisyyden.
public class Distances { public int find(int[] t, int k) { // TODO } public static void main(String[] args) { Distances d = new Distances(); int[] t = {1,2,4,5}; System.out.println(d.find(t,1)); // 1 System.out.println(d.find(t,2)); // 1 System.out.println(d.find(t,3)); // 2 System.out.println(d.find(t,4)); // 3 System.out.println(d.find(t,5)); // 3 System.out.println(d.find(t,6)); // 4 } }