請用 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