【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();
        
    }
}
相关推荐
counting money5 分钟前
prim算法最小生成树(java)
算法
澈2079 分钟前
C++面向对象:类与对象核心解析
c++·算法
用户6906738819211 分钟前
基于无人机的单目测距系统,平均误差仅2.12%
算法
6Hzlia24 分钟前
【Hot 100 刷题计划】 LeetCode 141. 环形链表 | C++ 哈希表直觉解法
c++·leetcode·链表
dinl_vin27 分钟前
LangChain 系列·(四):RAG 基础——给大模型装上“外脑“
人工智能·算法·langchain
探物 AI1 小时前
【感知·医学分割】当 YOLOv11 杀入医学赛道:先检测后分割的级联架构
算法·yolo·计算机视觉·架构
隔壁大炮1 小时前
Day06-08.CNN概述介绍
人工智能·pytorch·深度学习·算法·计算机视觉·cnn·numpy
白云千载尽1 小时前
前馈与反馈——经典控制理论中的基础概念
人工智能·算法
炽烈小老头1 小时前
【每日天学习一点算法 2026/04/27】缺失的第一个正数
学习·算法
南宫萧幕2 小时前
HEV 智能能量管理实战:从 MPC/PPO 理论解析到 Python-Simulink 联合仿真闭环全流程
开发语言·python·算法·matlab·控制