two stacks
NOTE
Stack
is implemented by Array
which is slow when expanding size
so we use LinkedList
here, which inherents Deque
interface and can act like Stack
class CQueue {
LinkedList<Integer> s1, s2;
public CQueue() {
s1 = new LinkedList<>();
s2 = new LinkedList<>();
}
public void appendTail(int value) {
s1.push(value);
}
public int deleteHead() {
if (s2.size() != 0) return s2.pop();
if (s1.size() == 0) return -1;
while (s1.size() > 0) {
s2.push(s1.pop());
}
return s2.pop();
}
}