题目:
备注:
只能使用stack的标准操作,push to top
,peek/pop from top
, is empty
等
所有的操作必须是合法的,比如当queue
是空的时候不会有pop
操作
题目介绍:
这道题目牵涉到两个基础的数据结构,stack
和queue
。stack:
先进后出(FILO, First In Last Out)
,stack
可以比喻成一个盒子,我们往盒子里先放a书,再放b书,最后放c书,如果我们想要拿出a书,那么要先拿出c书,再拿出b书,最后才能拿到a书。queue:
先进先出(FIFO, First In First Out)
,就像我们结账排队,先到先结账,queue
正好具备和stack
相反的性质。
思路总结
- inbox:总是用来存储新元素。
- outbox:用来取出元素,以此来满足queue FIFO的性质。
只要有新的元素进来,就把它放进inbox
。
如果需要删除元素,直接从outbox
里面拿元素出来,但是注意这是在outbox
里面有元素的情况下。
如果outbox
里面没有元素呢?那就把inbox(if any)
里面的元素先放进outbox
。
代码实现
|
|