CSES - Suurin etäisyys Annettuna on lista lukuja ja tehtäväsi on selvittää, mikä on suurin etäisyys kahden luvun välillä. Esimerkiksi listalla $[4,5,2,1,2]$ suurin etäisyys on $4$, joka saadaan, kun valitaan luvut $5$ ja $1$.

Listan jokainen alkio on kokonaisluku välillä $1 \dots 10^9$ ja listassa on enintään $10^5$ alkiota. Tavoitteena on, että algoritmin aikavaativuus on $O(n)$ tai $O(n \log n)$.

Python

Toteuta tiedostoon maxdist.py funktio find, joka ilmoittaa suurimman etäisyyden.
def find(t):
    # TODO

if __name__ == "__main__":
    print(find([4,5,2,1,2])) # 4
    print(find([1,2,3,4])) # 3
    print(find([1])) # 0
    print(find([1,2,100,5])) # 99
Java

Toteuta tiedostoon MaxDist.java metodi find, joka ilmoittaa suurimman etäisyyden.
public class MaxDist {
    public int find(int[] t) {
        // TODO
    }

    public static void main(String[] args) {
        MaxDist m = new MaxDist();
        System.out.println(m.find(new int[] {4,5,2,1,2})); // 4
        System.out.println(m.find(new int[] {1,2,3,4})); // 3
        System.out.println(m.find(new int[] {1})); // 0
        System.out.println(m.find(new int[] {1,2,100,5})); // 99
    }
}