4. Stack and Queue
Queue
Stack
Implement stack by queue
1. Two Queue, Push O(1), Pop O(n)
class MyStack {
private Deque<Integer> q1;
private Deque<Integer> q2;
private int top;
public MyStack() {
q1 = new LinkedList<>();
q2 = new LinkedList<>();
}
public void push(int x) {
q1.add(x);
top = x;
}
public int pop() {
while(q1.size() > 1){
top = q1.poll();
q2.add(top);
}
Deque<Integer> tmp = q1;
q1 = q2;
q2 = tmp;
return q2.poll();
}
public int top() {
return top;
}
public boolean empty() {
return q1.isEmpty();
}
}2. Two Queue, Push O(n), Pop(1)
3. One Queue, Push O(n), Pop(1)
Implement Queue by stack
1. Two stacks, add O(n), poll O(1)
2. Two stacks, add average O(1), poll O(1)
Last updated