四、剑指offer:09. 用两个栈实现队列
剑指 Offer 09. 用两个栈实现队列
一、题目描述
用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )
示例 1:
输入:
[“CQueue”,”appendTail”,”deleteHead”,”deleteHead”]
[[],[3],[],[]]
输出:[null,null,3,-1]示例 2:
输入:
[“CQueue”,”deleteHead”,”appendTail”,”appendTail”,”deleteHead”,”deleteHead”]
[[],[],[5],[2],[],[]]
输出:[null,-1,null,null,5,2]提示:
1 <= values <= 10000
最多会对 appendTail、deleteHead 进行 10000 次调用
二、解题思路
从题目可以看出,题意是要用两个“先进后出”的栈实现一个“先进先出”的队列。
具体实列:
①、定义两个栈:stack1、stack2;在stack1中依次插入值;
②、然后将stack1中的值依次弹入stack2中;
③、如:在stack1中依次插入1、2、3、4;那么这时stack1的栈顶值为4;然后依次插入stack2中;这时stack2的栈顶值就为:1;这样就用两个栈实现的先进先出的队列!
三、具体实现
1 |
|
1 | 队列先进先出的数字为:1 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Kevin的学习站!