leetcode 链接:https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/

题目

image.png

解题

题目要求两个栈实现队列,所有必须使用两个栈

  • 一个栈作入栈,即有数据在队尾插入时直接把数据放入此栈
  • 一个栈作出栈,需要从队头移除数据时分两种情况:

    • 出栈有数据,则直接将数据出栈返回即可
    • 出栈没有数据,将入栈中的数据依次弹出压入出栈

      1. class CQueue {
      2. private Stack<Integer> in;
      3. private Stack<Integer> out;
      4. public CQueue() {
      5. this.in = new Stack<>();
      6. this.out = new Stack<>();
      7. }
      8. public void appendTail(int value) {
      9. in.push(value);
      10. }
      11. public int deleteHead() {
      12. if (out.empty()) {
      13. while (!in.empty()) {
      14. out.push(in.pop());
      15. }
      16. }
      17. return out.empty() ? -1 : out.pop();
      18. }
      19. }