CSES - Pariton luku

Annettuna on lista lukuja, jossa jokainen luku esiintyy kahdesti paitsi yksi luku esiintyy vain kerran. Tehtäväsi on etsiä tämä pariton luku.

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

Python

Toteuta tiedostoon findodd.py funktio find, joka ilmoittaa parittoman luvun.

def find(t):
    # TODO

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

Java

Toteuta tiedostoon FindOdd.java metodi find, joka ilmoittaa parittoman luvun.

public class FindOdd {
    public int find(int[] t) {
        // TODO
    }

    public static void main(String[] args) {
        FindOdd f = new FindOdd();
        System.out.println(f.find(new int[] {2,2,4,3,4})); // 3
        System.out.println(f.find(new int[] {1,2,3,4,1,2,3})); // 4
        System.out.println(f.find(new int[] {1})); // 1
        System.out.println(f.find(new int[] {1,4,2,3,2,3,4})); // 1
        System.out.println(f.find(new int[] {4,1,3,2,3,2,1})); // 4
    }
}