【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();
        
    }
}
相关推荐
奔跑的Ma~15 小时前
第6篇:蓝桥杯C++进阶突破(难题拆解+算法优化,冲刺国赛高奖)
c++·算法·蓝桥杯·#蓝桥杯备战·#c++编程·编程竞赛
数智工坊15 小时前
MPC引导的策略搜索:用模型预测控制训练安全高效的无人机深度控制策略
论文阅读·人工智能·算法·无人机
Lenyiin15 小时前
《LeetCode 顺序刷题》81 - 90
算法·leetcode
ZPC821015 小时前
双目相机 深度图和点云生成物体3D包围盒 生成抓取姿态
人工智能·数码相机·算法·yolo·计算机视觉
rGzywSmDg15 小时前
如何在Dev-C++中配置TDM-GCC编译器
开发语言·c++·算法
芜湖_15 小时前
LeetCode Hot 100 01 - 哈希
c++·算法·leetcode·哈希算法
浅念-15 小时前
LeetCode回溯算法从入门到精通完整解析
开发语言·数据结构·c++·算法·leetcode·dfs·深度优先遍历
青云计划15 小时前
数据库的ID的另一种选择-雪花算法
数据库·算法
夏日听雨眠15 小时前
linux(线程,线程同步 方法 互斥锁 信号量 条件变量 )
linux·运维·算法
神经网络机器学习智能算法画图绘图15 小时前
基于改进的支持向量机多分类预测研究
算法·支持向量机·分类