【LeetCode】232. 用栈实现队列

题目

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

思路

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

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

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();
        
    }
}
相关推荐
caimouse2 小时前
ReactOS 图形系统分析(17):区域填充 — EngPaint / IntEngPaint(paint.c)
c语言·开发语言·算法
生态学者2 小时前
Ecological Indicators | 机场鸟调的新方法:用 AWM-PC1 读懂干扰梯度下的鸟类群落
人工智能·算法·r语言·微信公众平台
Herbert_hwt2 小时前
第六章 Java深入理解接口、函数式接口与lambda表达式
java·开发语言·算法
君君思密达3 小时前
LeetCode Hot 100 题目详解-滑动窗口
算法·leetcode·职场和发展
GreenTea11 小时前
深度解读 Anthropic 多智能体报告:更强的模型 ≠ 更好的协调
前端·后端·算法
fqq312 小时前
力扣刷题前置Java语法
算法·leetcode·职场和发展
Thecozzy14 小时前
大厂 AI Coding 面试大招
人工智能·面试·职场和发展
半夏微凉半夏殇14 小时前
x11与weston对比,优先选哪个
leetcode·均值算法·eclipse
2501_9065651214 小时前
数学之美探究
算法
oier_Asad.Chen14 小时前
【洛谷题解/AcWing题解/OI学习笔记】洛谷P2868【USACO07DEC】Sightseeing Cows G(01分数规划求最大比率)
算法·图论·spfa·二分·负环