栈,队列相互模拟

232. 用栈实现队列

  1. class MyQueue:
  2.     def __init__(self):
  3.         self.stack_in=[]
  4.         self.stack_out=[]
  5.     def push(self, x: int) -> None:
  6.         self.stack_in.append(x)
  7.     def pop(self) -> int:
  8.         if self.empty():
  9.             return None
  10.         if self.stack_out:
  11.             return self.stack_out.pop()
  12.         else:
  13.             for i in range(len(self.stack_in)):
  14.                 self.stack_out.append(self.stack_in.pop())
  15.             return self.stack_out.pop()
  16.     def peek(self) -> int:
  17.         ans=self.pop()
  18.         self.stack_out.append(ans)
  19.         return ans
  20.     def empty(self) -> bool:
  21.         return not (self.stack_in or self.stack_out)
  1. class MyStack:
  2.     def __init__(self):
  3.         self.que=deque()
  4.     def push(self, x: int) -> None:
  5.         self.que.append(x)
  6.     def pop(self) -> int:
  7.         if self.empty():
  8.             return None
  9.         for i in range(len(self.que)-1):
  10.             self.que.append(self.que.popleft())
  11.         return self.que.popleft()
  12.     def top(self) -> int:
  13.         if not self.empty():
  14.             return self.que[-1]
  15.         return None
  16.         # if self.empty():
  17.         #     return None
  18.         # for i in range(len(self.que)-1):
  19.         #     self.que.append(self.que.popleft())
  20.         # ans=self.que.popleft()
  21.         # self.que.append(ans)
  22.         # return ans
  23.     def empty(self) -> bool:
  24.         return not self.que

发表评论