【LeetCode】232. 用栈实现队列

题目

https://leetcode-cn.com/problems/implement-queue-using-stacks/

思路

用两个栈倒腾,让元素的顺序反转两次,就回到了原始顺序

  • stackIn是正常栈中顺序,stackOut是反转顺序
  • 每次push总是往stackIn里加
  • 每次pop/peek
    • 如果stackOut里面非空,那么在stackOut中pop/peek
    • 如果stackOut里面为空而且stackIn不为空,那么就将stackIn中的全部元素直接push到stackOut中

code

java 复制代码
class MyQueue {
    Deque<Integer> stackIn = new ArrayDeque<>();
    Deque<Integer> stackOut = new ArrayDeque<>();
    
    public MyQueue() {
        
    }
    
    public void push(int x) {
        stackIn.push(x);
    }
    
    public int pop() {
        if(empty()) return -1;
        if(!stackOut.isEmpty()){
            return stackOut.pop();
        }else{
            int count=stackIn.size();
            for(int i=0;i<count;i++){
                stackOut.push(stackIn.pop());
            }
            return stackOut.pop();
        }
        
    }
    
    public int peek() {
        if(empty()) return -1;
        if(!stackOut.isEmpty()){
            return stackOut.peek();
        }else{
            int count=stackIn.size();
            for(int i=0;i<count;i++){
                stackOut.push(stackIn.pop());
            }
            return stackOut.peek();
        }
        
    }
    
    public boolean empty() {
        return stackIn.isEmpty() && stackOut.isEmpty();
        
    }
}
相关推荐
suhan11 小时前
【数据结构】五、树:6.平衡二叉树AVL
数据结构·算法·排序算法
suhan11 小时前
【数据结构】五、树:5.二叉排序树BST
数据结构·算法·排序算法
爱读书的小胖11 小时前
80. 删除有序数组中的重复项 II
java·数据结构·算法
臻选云栗子12 小时前
PCDN跑不起来?先别甩锅给平台,问题可能出在这
算法·程序员
小画家~12 小时前
vue3 里面的 itemList.reduce
前端·数据结构·算法
All for pursuit.12 小时前
【完结】LeetCodeHot100题 详细解题过程及代码汇总
数据结构·c++·算法·leetcode
mmmmath_313 小时前
LeetCode.101.对称二叉树
数据结构·leetcode
重生之小比特13 小时前
【算法拾光】双指针|移动零 + 复写零
数据结构·c++·算法
梦帮科技13 小时前
Linux 内存取证学与 Rootkit 猎杀——Volatility 核心剖析与内核隐藏模块逆向清除
linux·运维·服务器·神经网络·算法·网络安全
广州智造13 小时前
Radioss二次开发需要准备什么?
人工智能·算法·机器学习·cad·cae