Tehtäväsi on toteuttaa luokka, joka pitää yllä listaa luvuista sekä tarjoaa metodin, joka ilmoittaa, montako eri esiintymismäärää listan luvuilla on. Esiintymismäärä tarkoittaa, montako kertaa luku esiintyy listalla.
Esimerkiksi listassa on vain yksi esiintymismäärä, koska jokainen luku esiintyy kahdesti. Listassa on kolme esiintymismäärää, koska luku esiintyy kerran, luku kahdesti ja luku kolmesti.
Toteuta tiedostoon occurrences.py
luokka OccurrenceTracker
, jossa on seuraavat metodit:
append(number)
: lisää luku listan loppuuncount()
: ilmoita, montako eri esiintymismäärää listan luvuilla on
Kummankin metodin tulee toimia ajassa .
class OccurrenceTracker: def __init__(self): # TODO def append(self, number): # TODO def count(self): # TODO if __name__ == "__main__": tracker = OccurrenceTracker() tracker.append(1) tracker.append(2) tracker.append(1) tracker.append(3) print(tracker.count()) # 2 tracker.append(2) tracker.append(3) print(tracker.count()) # 1 tracker.append(2) tracker.append(3) tracker.append(3) print(tracker.count()) # 3
Voit tutkia ratkaisusi tehokkuutta seuraavan testin avulla. Tässäkin tapauksessa koodin tulisi antaa vastaus välittömästi.
tracker = OccurrenceTracker() total = 0 for i in range(10**5): tracker.append(i % 100 + 1) total += tracker.count() print(total) # 198901