【刷题DAY10】232, 225.md

232. 用栈实现队列

题目链接:https://leetcode.cn/problems/implement-queue-using-stacks/

0x1 看到题目的第一想法

  • 没想法

0x2 自己实现过程中遇到哪些困难

  • python中栈这个数据类型直接调用吗
  • list怎么pop

0x3 今日学习的文章链接,或者视频链接

0x4 看完代码随想录之后的想法

  • 用栈实现队列
    • 需要使用两个栈
    • 入队操作
      • 直接将元素放入stack_in中
    • 出队操作(先进先出)
      • S1. 判断队列是否为空,为空不用继续了,返回None
      • S2. stack_out如果为空,需要将stack_in里的内容全部pop到stack_out中,再从stack_out中pop出元素
      • S3. stack_out不为空,直接从stack_out中pop元素
    • 取队头元素
      • S1. 判断队列是否为空,为空不用继续了,返回None
      • S2. stack_out如果为空,需要将stack_in里的内容全部pop到stack_out中,再索引stack_out[-1]
      • S3. stack_out不为空,直接索引stack_out[-1]
    • 判断队列是否为空
      • stack_in和stack_out均是空的,即队列空

0x5 今日收获,记录一下自己的学习时长

  • 用栈实现队列
    • 需要两个栈
  • python可以用list实现栈
    • stack_in.append(xxx)即为入栈
    • stack_in.pop()即为出栈
  • 45min

225. 用队列实现栈

题目链接:https://leetcode.cn/problems/implement-stack-using-queues/

0x1 看到题目的第一想法

  • 没想法

0x2 自己实现过程中遇到哪些困难

  • python中队列这个数据类型不知道怎么拿来用

0x3 今日学习的文章链接,或者视频链接

0x4 看完代码随想录之后的想法

  • 用队列实现栈

    • 可用一个队列进行实现
    • 入栈操作
      • 直接将元素放入que中
    • 出栈操作(先进后出)

      • S1. 判断队列是否为空,为空不用继续了,返回None
      • S2. 将前面n-1个元素全部按顺序取出来再放到队尾,现在出队的元素就是我们要出栈的元素,而且后面的元素还保持着原来的顺序
    • top(栈顶元素)

      • S1. 判断队列是否为空,为空不用继续了,返回None
      • S2. que[-1]
    • 判断栈是否为空
      • 队列长度是否为0

0x5 今日收获,记录一下自己的学习时长

  • 用队列实现栈
    • 需要一个队列
  • python可以用deque()实现队列
    • que.popleft()即为出队
    • que.append(xx)即为入队
  • 45min

待重点复习

232, 225

总结

  • 栈与队列
    • 用栈实现队列
    • 用队列实现栈