首页 > 其他分享 >232. 用栈实现队列

232. 用栈实现队列

时间:2025-01-21 11:09:29浏览次数:1  
标签:stIn 队列 pop int 用栈 empty stOut MyQueue 232

题目

没想透的一点:对于要实现的队列的pop操作,其实先看输出栈是否为空,如果不为空,直接从输出栈弹出即可,如果为空,再将输入栈的元素依次压入输出栈(注意是全部压入输出栈,毕竟输入栈的最下面的那个元素其实是我们想要弹出的元素),再弹出输出栈的栈顶元素。

卡哥思路讲得很清晰,跟着卡哥代码敲了下:

class MyQueue {
public:
    stack<int> stIn;
    stack<int> stOut;
    MyQueue() {
        
    }
    
    void push(int x) {
        stIn.push(x);
    }
    
    int pop() {
        if (stOut.empty())
        {
            while (!stIn.empty())
            {
                stOut.push(stIn.top());
                stIn.pop();
            }
        }
        int result = stOut.top();
        stOut.pop();
        return result;
    }
    
    int peek() {
        int res = this->pop();
        stOut.push(res);
        return res;
    }
    
    bool empty() {
        return stIn.empty() && stOut.empty();
    }
};

/**
 * Your MyQueue object will be instantiated and called as such:
 * MyQueue* obj = new MyQueue();
 * obj->push(x);
 * int param_2 = obj->pop();
 * int param_3 = obj->peek();
 * bool param_4 = obj->empty();

标签:stIn,队列,pop,int,用栈,empty,stOut,MyQueue,232
From: https://www.cnblogs.com/hisun9/p/18683232

相关文章

  • 单调队列:实用而好写的数据结构
    前言|Preface这几天连续做了好几道单调队列的题,难度从绿到蓝不等,摸索出了一些经验,也总结了一些单调队列的特点和规律。概述|Outline顾名思义,单调队列的重点分为「单调」和「队列」。「单调」指的是元素的「规律」——递增(或递减)。「队列」指的是元素只能从队头和队尾进......
  • StackOrQueueOJ2:用队列实现栈
    目录题目描述思路分析创建由队列实现的栈出栈压栈销毁代码展示题目描述原题:225.用队列实现栈思路分析这题我们需要知道栈和队列的差异,栈是先进后出,但队列是先进先出;出队列和出栈有冲突:创建由队列实现的栈这里我们要注意:如果使用MyStack*st创建,那是局部变......
  • 串口、COM口、UART口 ;TTL、 RS-232、 RS-485
    串口、COM口、UART口TTL、RS-232、RS-485区别首先串口、COM口、UART口一般指的是硬件接口。而TTL、RS-232、RS-485则是逻辑电平0和1的不同表示标准它们区别如下:1)和RS232相比,由于RS485采用了差分传输的方式,因此抗干扰能力强很多。TTL抗干扰能力最差。2)像STM32这类单片机的USART......
  • C# PriorityQueue优先队列
    namespacePriorityQueueDemo{publicclassTask{publicstringName{get;set;}}publicclassTaskPriorityComparer:IComparer<(int,int)>{publicintCompare((int,int)x,(int,int)y){......
  • LeetCode栈和队列
    栈和队列LeetCode栈和队列刷题记录基础知识栈线性表,只允许在表的一段进行插入和删除操作,满足先进后出原则栈在python中没有特定的类或库函数,一般通过列表(list)或是collections.deque双端队列来实现liststack=[]stack.append(1)#压栈stack.append(2)print(st......
  • 单调队列优化dp
    一本通题解T2:再也不想碰这道题了。。。写了一下午。我们先设状态\(dp[i][j]\)表示前i个刷匠,考虑了前\(j\)个木板后所获得的最大价值(\(j\)个木板可以有空余)。然后枚举前\(i\)个刷匠,枚举每一条木板。对于一条木板可以此刷匠根本不刷,或不刷当前木板,状转方程:\[dp[i][j]......
  • 系统编程(进程通信--消息队列)
    消息队列概念:消息队列就是一个消息的链表,提供了一种由一个进程向另一个进程发送块数据的方法。另外,每一个数据块被看作有一个类型,而接收进程可以独立接收具有不同类型的数据块,在许多方面看来,消息队列类似于有名管道,但是却没有与打开与关闭管道的复杂关联。优点:1.通过发......
  • Kafka分布式消息队列
    一、概述kafka是一个分布式的基于发布/定义的消息队列(MessageQueue)通信处理同步处理客户端->数据库->发送短信->响应客户端异步处理客户端->数据库->发送短信放入MQ(直接响应客户端)消息队列的优势解耦:允许独立的处理两边处理过程,遵循接口约束即可可恢复性:当某......
  • 栈与队列(代码随想)
    目录1.理论分析1.1栈1.2队列2.用栈实现队列3.用队列实现栈算法公开课队列的基本操作!|LeetCode:225.用队列实现栈 (opensnewwindow)https://www.bilibili.com/video/BV1Fd4y1K7sm225.用队列实现栈-力扣(LeetCode)优化4.有效的括号5.删除字符串中的所有相邻重复......
  • 云消息队列 Kafka 版 V3 系列荣获信通院“云原生技术创新标杆案例”
    2024年12月24日,由中国信息通信研究院(以下简称“中国信通院”)主办的“2025中国信通院深度观察报告会:算力互联网分论坛”,在北京隆重召开。本次论坛以“算力互联网新质生产力”为主题,全面展示中国信通院在算力互联网产业领域的研究、实践与业界共识,与产业先行者共同探索算力互......