Lazy loaded image
LC225.用队列实现栈
00 min
2025-1-2
Completed
Jan 2, 2025
标签
队列
模拟
相关企业
难度
简单
  • 题目描述:用两个队列实现栈的push、pop、top和empty功能
  • 代码思路:考察对栈和队列的熟练程度。有多种方法实现,本篇介绍双端队列实现、双队列实现和单队列实现

双端队列实现

双端队列实现起来比较容易,Deque可以在随意在队头队尾进行add、poll、peek等操作

双队列实现

使用双队列模拟栈,最核心一点就是在每次添加元素时,将其添加到队列头,而不是队列尾。添加到队列头,在队列的poll操作和peek操作时,才能模拟为栈。
为了每次添加新元素时能够添加到头部,需要先将队列1中的所有数据导到队列2中,再把新元素添加到队列1的第一个,再把队列2中的数据导回队列1。队列2实现了一个暂存的辅助功能

单队列实现

在双队列的基础上进一步优化,核心还是在push操作的时候,想办法把新元素放到队头。不需要队列2进行辅助,在新元素来的时候,正常入队列,然后将队列的前size-1个元素,依次出队列再入队列,保证每个新加入的元素都在队列的头部
上一篇
空白文章
下一篇
示例文章