题目 剑指 Offer 09. 用两个栈实现队列
我的复述:
函数操作
CQueue
deleteHead
appendTail
appendTail
deleteHead
deleteHead
入参
[]
[]
5
2
[]
[]
返回结果
null
-1
null
null
5
2
知识点
题解
1,CQueue
:直接初始化两个栈;
2,appendTail
:往stack1
里压入元素;
3,deleteHead
:先判断stack2
若不为空,直接弹出元素;若stack1
和stack2
都为空,根据题意返回-1;如果stack1
不为空,循环里面的元素,把stack1
弹出的元素压入stack2
,这样stack2的栈顶元素就是stack1的栈底元素。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 class CQueue { Stack<Integer> stack1; Stack<Integer> stack2; public CQueue () { stack1 = new Stack <Integer>(); stack2 = new Stack <Integer>(); } public void appendTail (int value) { stack1.push(value); } public int deleteHead () { if (!stack2.isEmpty()) { return stack2.pop(); } if (stack1.isEmpty()) { return -1 ; } while (!stack1.isEmpty()) { int topValue = stack1.pop(); stack2.push(topValue); } return stack2.pop(); } }
如果本篇文章对你有帮助,可以给作者加个鸡腿~(*^__^*),感谢鼓励与支持!
打赏
微信支付
支付宝