Lista on permutaatio, jos se sisältää jokaisen luvun kerran, missä on listan koko. Esimerkiksi listat , ja ovat permutaatioita.
Toteuta tiedostoon permutation.py
luokka PermutationTracker
, jossa on seuraavat metodit:
append(number)
: lisää luku listan loppuuncheck()
: palautaTrue
, jos lista on permutaatio, ja muutenFalse
Kummankin metodin tulee toimia ajassa .
class PermutationTracker: def __init__(self): # TODO def append(self, number): # TODO def check(self): # TODO if __name__ == "__main__": tracker = PermutationTracker() tracker.append(1) print(tracker.check()) # True tracker.append(4) print(tracker.check()) # False tracker.append(2) print(tracker.check()) # False tracker.append(3) print(tracker.check()) # True tracker.append(2) print(tracker.check()) # False tracker.append(5) print(tracker.check()) # False
Tässä listan sisältö muuttuu seuraavasti:
- (on permutaatio)
- (ei ole permutaatio)
- (ei ole permutaatio)
- (on permutaatio)
- (ei ole permutaatio)
- (ei ole permutaatio)
Voit tutkia ratkaisusi tehokkuutta seuraavan testin avulla. Tässäkin tapauksessa koodin tulisi antaa vastaus välittömästi.
tracker = PermutationTracker() total = 0 for i in range(10**5): if i%2 == 0: tracker.append(i + 2) else: tracker.append(i) if tracker.check(): total += 1 print(total) # 50000