• 力扣232题、225题(栈实现队列,队列实现栈)


    232、栈实现队列

    代码:

    class MyQueue {
        Stack<Integer> stackOut;
        Stack<Integer> stackIn;
        public MyQueue() {
            stackOut = new Stack<>();//负责出栈
            stackIn = new Stack<>();//负责进栈
        }
        
        public void push(int x) {
            stackIn.push(x);
        }
        
        public int pop() {
            dumpStackIn();
            return stackOut.pop();
        }
        
        public int peek() {
            dumpStackIn();
            return stackOut.peek();
        }
        
        public boolean empty() {
            return stackIn.isEmpty() && stackOut.isEmpty();
        }
    
        private void dumpStackIn(){
            if (stackOut.isEmpty()){
                while (!stackIn.isEmpty()){
                    stackOut.push(stackIn.pop());
                }
            }
        }
    }

    225、队列实现栈

    具体实现:

     代码:

    class MyStack {
        Deque<Integer> que1; // 和栈中保持一样元素的队列
        Deque<Integer> que2; // 辅助队列
    
    
        public MyStack() {
            que1 = new ArrayDeque<>();
            que2 = new ArrayDeque<>();
        }
        
        public void push(int x) {
            que1.addLast(x);
        }
        
        public int pop() {
            int size = que1.size();
            size--;
             // 将 que1 导入 que2 ,但留下最后一个值
            while (size-- > 0){
                que2.addLast(que1.peekFirst());
                que1.pollFirst();
            }
    
            int res = que1.pollFirst();
            que1 = que2; // 将 que2 对象的引用赋给了 que1 ,此时 que1,que2 指向同一个队列
            que2 = new ArrayDeque<>();// 如果直接操作 que2,que1 也会受到影响,所以为 que2 分配一个新的空间
            return res;
        }
        
        public int top() {
            return que1.peekLast();
        }
        
        public boolean empty() {
            return que1.isEmpty();
        }
    }
  • 相关阅读:
    通讯录排序(c++)
    常用头文件的可调用函数的归类笔记
    常用头文件的可调用函数的归类笔记
    一维数组基础笔记(声明,定义,调用)
    一维数组基础笔记(声明,定义,调用)
    数据库安全
    python不常见用法
    异常处理-做一个优雅的程序员
    TCP/IP
    Python基础01
  • 原文地址:https://www.cnblogs.com/zhaojiayu/p/15501581.html
Copyright © 2020-2023  润新知