Tehtäväsi on toteuttaa luokka, joka pitää yllä listaa luvuista sekä tarjoaa metodin, jonka avulla voidaan hakea tehokkaasti listan suurin luku.
Toteuta tiedostoon maxlist.py
luokka MaxList
, jossa on seuraavat metodit:
append(number)
: lisää luku listan loppuunmax()
: ilmoita listan suurin luku
Voit olettaa, että listalla on vähintään yksi luku, kun metodia max
kutsutaan. Kummankin metodin tulee toimia tehokkaasti ajassa .
class MaxList: def __init__(self): # TODO def append(self, number): # TODO def max(self): # TODO if __name__ == "__main__": numbers = MaxList() numbers.append(1) numbers.append(2) numbers.append(3) print(numbers.max()) # 3 numbers.append(8) numbers.append(5) print(numbers.max()) # 8
Tässä listalle lisätään ensin luvut , ja , minkä jälkeen listan sisältö on ja suurin luku on . Tämän jälkeen lisätään vielä luvut ja , minkä jälkeen listan sisältö on ja suurin luku on .
Voit tutkia ratkaisusi tehokkuutta seuraavan testin avulla. Tässäkin tapauksessa koodin tulisi antaa vastaus välittömästi.
numbers = MaxList() total = 0 for i in range(10**5): numbers.append(i * 999983 % 10**9) total += numbers.max() print(total) # 99498381797517