CSES - Kääntölista

Toteuta luokka FlipList, jossa on seuraavat metodit:

  • push_first(x): lisää luku x listan alkuun
  • push_last(x): lisää luku x listan loppuun
  • pop_first(): palauta ja poista alkio listan alusta
  • pop_last(): palauta ja poista alkio listan lopusta
  • flip(): käännä listan sisältö

Jokaisen metodin tulee toimia ajassa O(1).

Toteuta tiedostoon fliplist.py luokka FlipList seuraavan mallin mukaisesti.

class FlipList:
    def __init__(self):
        # TODO

    def push_first(self, x):
        # TODO

    def push_last(self, x):
        # TODO

    def pop_first(self):
        # TODO

    def pop_last(self):
        # TODO

    def flip(self):
        # TODO

if __name__ == "__main__":
    f = FlipList()
    f.push_last(1)
    f.push_last(2)
    f.push_last(3)
    print(f.pop_first()) # 1
    f.flip()
    print(f.pop_first()) # 3