首页 > 编程语言 >算法训练营第10天|栈与队列基础知识总结 LeetCode 232.用栈实现队列 225.用队列实现栈

算法训练营第10天|栈与队列基础知识总结 LeetCode 232.用栈实现队列 225.用队列实现栈

时间:2024-03-19 14:59:36浏览次数:33  
标签:10 队列 pop quein int 用栈 push empty

栈与队列基础知识总结 

首先要明白栈和队列不同的地方在于,栈是先入后出的结构,队列是先入先出的结构。

栈的基本操作

栈的定义:
 

stack<int>s;

入栈元素:

int x;
s.push(x);

出栈元素:

s.pop();

返回栈顶元素:

s.top();

判断栈是否为空:

s.empty();

队列的基本操作:

队列和栈的基本操作相同,有一点不同的是队列可以返回队尾元素:

queue<int>que;
int x=0;
que.push(x);
int a = que.back();//返回队尾元素

LeetCode 232.用栈实现队列

题目链接:

232. 用栈实现队列 - 力扣(LeetCode)

解题思路:

采用两个栈,一个进行元素的出队,一个作为元素的入队。

注意的是pop()操作,当stout为空时,将stin所有元素导入stout中,进行出队操作。

peek()操作和pop()操作相似,可直接调用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()){
                int tmp = stin.top();
                stin.pop();
                stout.push(tmp);
            }
        }
        int a = stout.top();
        stout.pop();
        return a;
    }
    
    int peek() {
        int a = this->pop();
        stout.push(a);
        return a;
    }
    
    bool empty() {
        return stin.empty()&&stout.empty();
    }
};

LeetCode 225. 用队列实现栈

题目链接:

225. 用队列实现栈 - 力扣(LeetCode)

解题思路:

主要难点是pop操作,首先记录quein的元素个数为n个,之后将n-1个传递给popout,将最后一个记录并弹出,之后返回记录的值,并将quein和queout两个队列交换。

代码:

class MyStack {
public:
    queue<int>quein;
    queue<int>queout;
    MyStack() {

    }
    
    void push(int x) {
        quein.push(x);
    }
    
    int pop() {
        int n = quein.size();
        while(--n){
            int a = quein.front();
            quein.pop();
            queout.push(a);
        }
        int a = quein.front();
        quein.pop();
        queue<int>tmp = quein;
        quein=queout;
        queout = tmp;
        return a;
    }
    
    int top() {
        if(!quein.empty()){
            return quein.back();
        }
        else{
            return queout.back();
        }
    }
    
    bool empty() {
        return quein.empty()&&queout.empty();
    }
};

标签:10,队列,pop,quein,int,用栈,push,empty
From: https://blog.csdn.net/qq_53125539/article/details/136722258

相关文章

  • 没钱实缴怎么办?知识产权可以100%实缴
    新《公司法》马上就要执行了。没有完成100%实缴又没有货币实缴的企业怎么办?可以通过知识产权100%实缴。知识产权100%实缴合理合法,还能享受税收优惠,对企业简直是一举两得。1994年7月1日修改的《公司法》第二十四条规定,知识产权出资比例不超过注册资本的20%。1997年7月4日国家......
  • MB10S-ASEMI适配器专用mini整流桥MB10S
    编辑:llMB10S-ASEMI适配器专用mini整流桥MB10S型号:MB10S品牌:ASEMI封装:MBS-4正向电流(Id):1A反向耐压(VRRM):1000V正向浪涌电流:30A正向电压(VF):1.10V引脚数量:4芯片个数:4芯片尺寸:50MIL功率(Pd):中小功率设备工作温度:-55°C~150°C类型:贴片整流桥、整流桥MB10S整流桥描述:ASEMI......
  • Cisco ASAv 9.20.2.10 发布 - 思科自适应安全虚拟设备 (ASAv)
    CiscoASAv9.20.2.10发布-思科自适应安全虚拟设备(ASAv)CiscoAdaptiveSecurityVirtualAppliance(ASAv)请访问原文链接:https://sysin.org/blog/cisco-asav/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org思科自适应安全虚拟设备(ASAv):跨物理和虚拟环境......
  • 在cifar-10数据集上t-sne可视化效果最好(๑•̀ㅂ•́)و✧
    还是需要在python上面保存模型,加载模型,然后提取特征保存为mat文件就行了(但我现在只加载了64维特征,4096维特征还没试过,估计也可以但应该会又慢又不好看)①先放matlab可视化t-sne的代码%加载特征数据data=load('10_157_ckpt.pth.mat');features=data.features;labels=dat......
  • 不平衡数据集cifar100训练模型,提取特征保存为mat文件
    主要分两步走,先训练好模型,保存模型,然后再读取模型,保存特征①训练模型,保存模型importtorchimporttorch.nnasnnimporttorch.optimasoptimimporttorchvisionimporttorchvision.transformsastransformsfromtorch.utils.data.samplerimportWeightedRandomSampler......
  • HK22010/T2直流智能充电模块:引领未来充电新风尚
    在数字化、智能化的浪潮下,充电技术也迎来了前所未有的革新。今天,我们就来深入了解一下HK22010/T2直流智能充电模块,这款引领未来充电新风尚的高科技产品。HK22010/T2直流智能充电模块以其高效、智能的特点,成为了市场上的一大亮点。它采用了先进的直流充电技术,能够实现快速、稳......
  • 算法模板 v1.10.1.20240319
    算法模板v1.1.1.20240115:之前历史版本已不可寻,创建第一份算法模板。v1.2.1.20240116:删除“编译”-“手动开栈”;删除“编译”-“手动开O优化”;修改“编译”-“CF模板”;删除“读写”;删除“图论”-“欧拉图”-“混合图”;删除“图论”-“可达性统计”;删除“数据类型”-“高精类”。......
  • linux hadoop106 history 1000
    ls2bin/flinkrun./examples/batch/WordCount.jar-Dexecution.runtime-mode=BATCH--input/opt/module/word.txt--output/opt/module/result.txt3bin/flinkrun./examples/batch/WordCount.jar-Dexecution.runtime-mode=BATCH-yDfs.overwrite-files=......
  • 第七章 Windows 10常见故障排查_实验案例一
    实验案例一:使用Windows安全模式解决系统故障1、实验环境    某公司的计算机全部安装了Windows10操作系统.公司员工由于操作不当,误安装了错误的驱动程序.导致计算机无法正常启动,现需要将错误的驱动程序卸载.2、需求描述通过安全模式进入操作系统。卸载掉存在兼容性......
  • MB10F-ASEMI适配器专用整流桥MB10F
    编辑:llMB10F-ASEMI适配器专用整流桥MB10F型号:MB10F品牌:ASEMI封装:MBF-4最大重复峰值反向电压:1000V最大正向平均整流电流(Vdss):1A功率(Pd):中小功率芯片个数:4引脚数量:4类型:贴片整流桥、整流桥正向浪涌电流:35A正向电压:1.00V最大输出电压(RMS):封装尺寸:如图工作温度:-55°C~......