代码随想录算法训练营第十天 | 栈与队列理论基础,232.用栈实现队列,225.用队列实现栈

发布时间 2023-12-22 20:15:42作者: amulet

一、栈与队列理论基础

学习:

1. 定义

  • 栈先进后出
  • 队列先进先出

2. 底层实现
均可以通过数组或链表进行实现

二、232.用栈实现队列

题目链接:

LeetCode 232.用栈实现队列

学习前:

思路:

学习后:

  • 不同方法有部分功能实现是一致的,则可以进行抽象提取,实现复用性
  • 两个栈实现队列

时间复杂度:入队为O(1),队首元素和出队为O(n)

空间复杂度:O(1)

三、225.用队列实现栈

题目链接:

LeetCode 225.用队列实现栈

学习前:

思路:

用两个队列实现一个栈,每次把length-1个元素放入队列二,队列1用于pop,peek,push

时间复杂度:插入为O(1),栈顶元素和出栈为O(n)

空间复杂度:O(1)

学习后:

用一个队列实现一个栈,通过不断地pop和push,使得最后一个元素变成入队元素

四、学习总结

  1. 时间:3h
  2. 学会自己写一个栈和队列数据结构的实现类