拿下技术面上传简历

用两个栈实现一个队列,要求 push 和 pop 的均摊时间复杂度为 O(1)。请描述入队和出队的具体过程。假设初始队列为空,连续执行 5 次入队操作(依次放入 1、2、3、4、5),然后执行 1 次出队,再连续执行 5 次入队(依次放入 6、7、8、9、10),再执行 1 次出队。请写出两个栈在每一步后的状态,以及两次出队分别返回什么元素。

数据结构与算法线性与树结构校招知识点 1 个

面试官在考什么

判断候选人是否真正手动模拟过两个栈实现队列,理解均摊 O(1) 的来源,以及是否清楚元素在两个栈之间的搬运时机。

栈与队列

回答框架 · 前两步

  1. 入队:元素压入 stack1。
  2. 出队:若 stack2 非空,直接 pop stack2;若 stack2 为空,将 stack1 全部弹出并压入 stack2,再从 stack2 pop。

还有 3 条答案要点、 3 层追问、 5 个常见坑, 以及针对你简历的追问路径,在定制报告里。

上传简历,生成我的题库先看示例报告

延伸阅读

想看这个方向的整体准备路线? 进入「数据结构与算法」方向页

同一能力域的其他题