Saat syötteenä listan, joka sisältää kokonaislukua.
Tarkastellaan prosessia, jossa valitset joka askeleella listan kaksi pienintä lukua, poistat ne listasta ja lisäät listan loppuun näiden lukujen summan vähennettynä yhdellä. Jatkat näin, kunnes listalla on vain yksi luku. Mikä tämä luku on?
Tehtäväsi on laatia tehokas algoritmi, joka selvittää annetun listan viimeisen luvun. Algoritmin aikavaativuuden tulee olla .
Toteuta tiedostoon lastnumber.py
funktio find
, joka palauttaa listan viimeisen luvun.
def find(t): # TODO if __name__ == "__main__": print(find([1,2,3,4])) # 7 print(find([1,1,1])) # 1 print(find([5,1,1,7,9,1,2])) # 20
Selitys: Kun lista on , poistat aluksi luvut ja ja lisäät luvun . Tämän jälkeen lista on . Sitten poistat luvut ja ja lisäät luvun , jolloin lista on . Lopuksi poistat luvut ja ja lisäät luvun , jolloin lista on .