赞
踩
先了解一下栈和队列的特点:
想用栈实现队列的特点,就需要使用两个栈。因为两个栈就可以将列表倒序。
假设第一个栈 s1 = [1,2,3]
,第二个栈 s2 = []
。若循环执行 s1
元素出栈并且添加到栈 s2
直到栈 s1
为空,则s1 = []
,s2 = [3,2,1]
,即栈s2
元素为栈s1
元素倒序。
最终方法:
s1
里面加入。s2
里面的元素,如果s2
为空,则把s1
里面的元素放入s2
,然后弹出s2
的元素。s1
和s2
同时为空,才为空class MyQueue { Stack<Integer> s1; Stack<Integer> s2; public MyQueue() { s1 = new Stack<>(); s2 = new Stack<>(); } public void push(int x) { s1.push(x); } public int pop() { if(!s2.isEmpty()) return s2.pop(); if(!s1.isEmpty()) { while(!s1.isEmpty()) { s2.push(s1.pop()); } return s2.pop(); } return -1; } public int peek() { if(!s2.isEmpty()) return s2.peek(); if(!s1.isEmpty()) { while(!s1.isEmpty()) { s2.push(s1.pop()); } return s2.peek(); } return -1; } public boolean empty() { return s2.isEmpty() && s1.isEmpty(); } } /** * Your MyQueue object will be instantiated and called as such: * MyQueue obj = new MyQueue(); * obj.push(x); * int param_2 = obj.pop(); * int param_3 = obj.peek(); * boolean param_4 = obj.empty(); */
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。