Date
Jul 26, 2023
need_review
need_review
type
剑指 Offer(第 2 版)
undo
undo
难度
简单
用两个栈实现一个队列。队列的声明如下,请实现它的两个函数
appendTail
和 deleteHead
,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead
操作返回 -1 )示例 1:
示例 2:
提示:
1 <= values <= 10000
- 最多会对
appendTail、deleteHead
进行10000
次调用
- 栈的特性: 先进后出
- 队列的特性: 先进先出
解法1 stack_1 -> stack_2 -> 取出值 -> stack_1, 每次删除头部的时候, 都把stack_1导到stack_2, 删完再倒回去.

解法2 优化解法1, 导到stack_2之后不倒回去, 删除头部时如果stack_2不空, 就继续删stack_2

读者来到图书馆排队借还书,图书管理员使用两个书车来完成整理借还书的任务。书车中的书从下往上叠加存放,图书管理员每次只能拿取书车顶部的书。排队的读者会有两种操作:
push(bookID)
:把借阅的书籍还到图书馆。
pop()
:从图书馆中借出书籍。
为了保持图书的顺序,图书管理员每次取出供读者借阅的书籍是 最早 归还到图书馆的书籍。你需要返回 每次读者借出书的值 。
如果没有归还的书可以取出,返回
-1
。示例 1:
提示:
1 <= bookID <= 10000
- 最多会对
push
、pop
进行10000
次调用