1. 题目
用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )
2. 示例1
输入:
["CQueue","appendTail","deleteHead","deleteHead"]
[[],[3],[],[]]
输出:[null,null,3,-1]
3. 提示
1 <= values <= 10000
最多会对 appendTail、deleteHead 进行 10000 次调用
4. 题解
说实话,要想看懂和这个题目真难!
["CQueue","appendTail","deleteHead","deleteHead"]
[[],[3],[],[]]
以上两个,第一个是具体操作,第二个是需要的参数。
CQueue:创建队列,此时不需要参数
appendTail:队尾新增元素,需要参数3
deleteHead: 删除对头元素,不需要参数
[null,null,3,-1],这个是返回值
CQueue: 创建队列,返回null
appendTail: 队尾新增元素3,返回null
deleteHead: 删除队头元素(3),返回3
deleteHead: 删除队头元素(此时为null),返回-1
5. 实现
1 public class CQueue09 {
2 // 两个栈,一个出栈,一个入栈
3 private Stack<Integer> stackIn;
4 private Stack<Integer> stackOut;
5
6 public CQueue09 () {
7 stackIn = new Stack<>();
8 stackOut = new Stack<>();
9 }
10
11 public void appendTail(int value) {
12 stackIn.push(value);
13 }
14
15 public int deleteHead() {
16 if(!stackOut.isEmpty()) {
17 return stackOut.pop();
18 } else {
19 while (!stackIn.isEmpty()) {
20 stackOut.push(stackIn.pop());
21 }
22 return stackOut.isEmpty() ? -1 : stackOut.pop();
23 }
24 }
25 }
6. 结语
努力去爱周围的每一个人,付出,不一定有收获,但是不付出就一定没有收获! 给街头卖艺的人零钱,不和深夜还在摆摊的小贩讨价还价。愿我的博客对你有所帮助(*^▽^*)(*^▽^*)!
如果客官喜欢小生的园子,记得关注小生哟,小生会持续更新(#^.^#)(#^.^#)。