232.用栈实现队列
题目链接:用栈实现队列
这道题是熟悉栈与队列的关系。队列是先进先出的,栈是后进先出的。这道题可以用两个栈来实现;将数第一个入栈,然后再出栈进入另一个栈。
class MyQueue {
Stack<Integer> outli;
Stack<Integer> intli;
public MyQueue() {
outli=new Stack<>();
intli=new Stack<>();
}
public void push(int x) {
intli.push(x);
}
public int pop() {
if(outli.isEmpty())
{
while(!intli.isEmpty())
{
outli.push(intli.pop());
}
}
return outli.pop();
}
public int peek() {
if(outli.isEmpty())
{
while(!intli.isEmpty())
{
outli.push(intli.pop());
}
}
return outli.peek();
}
public boolean empty() {
return intli.isEmpty()&&outli.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();
*/
225. 用队列实现栈
题目链接:用队列实现栈
这道题可以用一个队列来实现,将第一个元素弹出再加入到尾部,再全部弹出。
class MyStack {
Queue<Integer> line;
public MyStack() {
line=new LinkedList();
}
public void push(int x) {
int sz=line.size();
line.offer(x);//插入元素
for(int i=0;i<sz;i++)
{
line.offer(line.poll()/*获取第一个元素*/ );
}
}
public int pop() {
return line.poll();//获取第一个元素
}
public int top() {
return line.peek();//返回头元素
}
public boolean empty() {
return line.isEmpty();
}
}
/**
* Your MyStack object will be instantiated and called as such:
* MyStack obj = new MyStack();
* obj.push(x);
* int param_2 = obj.pop();
* int param_3 = obj.top();
* boolean param_4 = obj.empty();
*/
总结:对队列和栈不熟,许多的方法不知道