Toteuta luokka SpecialStack
, jossa on seuraavat metodit:
push(x)
: lisää lukux
pinon päällepop()
: palauta ja poista pinon ylin lukuincrease(k)
: kasvata pinon k ylimmän luvun arvoa yhdellä
Kaikkien metodien tulee toimia ajassa O(1).
Toteuta tiedostoon specialstack.py
luokka SpecialStack
seuraavan mallin mukaisesti.
class SpecialStack: def __init__(self): # TODO def push(self, x): # TODO def pop(self): # TODO def increase(self, k): # TODO if __name__ == "__main__": s = SpecialStack() s.push(1) s.push(2) s.push(3) s.increase(2) print(s.pop()) # 4 s.push(1) s.increase(2) print(s.pop()) # 2 print(s.pop()) # 4 print(s.pop()) # 1
Selitys: Pinon sisältö käyttäytyy koodipohjassa näin:
- []
push(1)
\rightarrow [1]push(2)
\rightarrow [1,2]push(3)
\rightarrow [1,2,3]increase(2)
\rightarrow [1,3,4]pop()
\rightarrow [1,3]push(1)
\rightarrow [1,3,1]increase(2)
\rightarrow [1,4,2]pop()
\rightarrow [1,4]pop()
\rightarrow [1]pop()
\rightarrow []