請用 queue 製作一個 stack
這一類型的題目,在實作過程中勢必會有一種操作會需要耗費 O(n) 的時間複雜度
以這題為例,會是以 push 時,除了新的元素之外,需要將原本在 queue 裡的東西依序拿出來,再依序放回 queue 裡
讓新放進去的元素出現在最開頭的位置,這樣在 pop 的時候可以直接呼叫 queue 的方法
class MyStack:
    def __init__(self):
        self.q1 = deque()
    def push(self, x: int) -> None:
        length = len(self.q1)
        self.q1.append(x)
        while length > 0:
            curr = self.q1.popleft()
            self.q1.append(curr)
            length -= 1
        
    def pop(self) -> int:
        if self.q1:
            
            return self.q1.popleft()
        
    def top(self) -> int:
        if self.q1:
            return self.q1[0]
        
    def empty(self) -> bool:
        return len(self.q1) == 0