剑指 Offer 09. 用两个栈实现队列

image.png

两个栈实现队列

  1. class CQueue {
  2. private Stack<Integer> stack1;
  3. private Stack<Integer> stack2;
  4. public CQueue() {
  5. this.stack1 = new Stack<Integer>();
  6. this.stack2 = new Stack<Integer>();
  7. }
  8. public void appendTail(int value) {
  9. // 直接加入栈 1
  10. stack1.add(value);
  11. }
  12. public int deleteHead() {
  13. // 如果栈 2 为空,则把栈 1 的元素依次弹出放入栈二
  14. if (stack2.empty()) {
  15. while (!stack1.empty()) {
  16. stack2.add(stack1.pop());
  17. }
  18. }
  19. // 如果栈 2 为空,说明两个栈都为空了,返回 -1
  20. if (stack2.isEmpty()) return -1;
  21. return stack2.pop();
  22. }
  23. }