text: '''
  用栈实现队列
  请你仅使用两个栈实现先入先出队列。队列应当支持一般队列的支持的所有操作（push、pop、peek、empty）：
  
  实现 MyQueue 类：
  
  void push(int x) 将元素 x 推到队列的末尾
  int pop() 从队列的开头移除并返回元素
  int peek() 返回队列开头的元素
  boolean empty() 如果队列为空，返回 true ；否则，返回 false
  
  '''
  '''
  思路1:2个栈，1个用于入栈，入栈在每个操作后保持为空，另外一个用于出栈
  可以使用pyton的list模拟，list仅允许使用append(即为push)、pop、[-1]可以使用
  思路1的pop、peek、empty的时间复杂度为O(1)，push的时间复杂度为O(n)
  
  '''
  
  
  class MyQueue:
      def __init__(self):
          self.inStack = []
          self.outStack = []
  
      def push(self, x: int) -> None:
          self.inStack.append(x)
  
      def pop(self) -> int:
          if len(self.outStack) == 0:
              while len(self.inStack) > 0:
                  self.outStack.append(self.inStack.pop())
          return self.outStack.pop()
  
      def peek(self) -> int:
          if len(self.outStack) == 0:
              while len(self.inStack) > 0:
                  self.outStack.append(self.inStack.pop())
          return self.outStack[-1]
  
      def empty(self) -> bool:
          return len(self.outStack) == 0 and len(self.inStack) == 0
  