CSES - Ainoa luku

Annettuna on kokonaislukuja sisältävä lista. Listassa on n1n-1 kertaa sama luku ja kerran toinen luku. Tehtäväsi on etsiä luku, joka esiintyy vain kerran.

Esimerkiksi kun lista on [2,1,1,1][2, 1, 1, 1], sinun tulee löytää luku 22. Vastaavasti kun lista on [5,5,5,3,5][5, 5, 5, 3, 5], sinun tulee löytää luku 33.

Toteuta tiedostoon onlyone.py funktio find_number, jolle annetaan parametrina lista lukuja. Funktion tulee palauttaa luku, joka esiintyy vain kerran. Voit olettaa, että listassa on vähintään kolme lukua ja vastaus on aina olemassa.

Sinun tulee toteuttaa tehokas ratkaisu, jonka aikavaativuus on O(n)O(n). Et voi esimerkiksi käydä jokaisen luvun kohdalla koko listaa läpi ja laskea, montako kertaa luku esiintyy listalla.

Tehtäväpohjan viimeisessä testissä lista sisältää 10510^5 kertaa luvun 11 ja kerran luvun 22. Funktiosi tulee toimia tehokkaasti tässäkin tapauksessa.

def find_number(numbers):
    # TODO

if __name__ == "__main__":
    print(find_number([1, 1, 1, 2])) # 2
    print(find_number([1, 1, 2, 1])) # 2
    print(find_number([1, 2, 1, 1])) # 2
    print(find_number([2, 1, 1, 1])) # 2
    print(find_number([5, 5, 5, 3, 5])) # 3
    print(find_number([1, 100, 1])) # 100

    numbers = [1] * 10**5 + [2]
    print(find_number(numbers)) # 2