力扣225 用队列实现栈

题目链接

如果用两个栈来实现队列,那么可以用两个队列来实现栈吗
首先看入栈操作和入队是一样的,直接用
就是这个出栈,每次出栈的是队列里的最后一个元素,那么将前面的元素依次入到第二个队列,然后再将所剩的最后一个元素出栈,然后再把前面的元素再入栈,恢复原样

盗个卡哥的图
在这里插入图片描述
首先队列的STL的访问首部元素是和那个栈的是不一样的
根据队列的数据结构,队列有头尾指针,而栈只有top一个栈顶指针。
入队可以指定元素,出队只能出队头第一个元素这是队列的特征,当然栈也是这么回事

经验,在敲代码的时候,要在每一行想着这行代码实现的中文含义,以及不要忘了再回顾一下是否可以实现这个程序或者函数要求实现的功能,敲完了,再回顾一遍,对照着功能

class MyStack {
public:
    queue<int>one;
    queue<int>two;
    MyStack() {

    }
    
    void push(int x) {
        one.push(x);
    }
    
    int pop() {
        int num=one.size();
        while(--num){
            two.push(one.front());
            one.pop();
        }
        int res = one.front();
        one.pop();
        while(!two.empty()){
            one.push(two.front());
            two.pop();
        }
        return res;
    }
    
    int top() {

        return one.back();
    }
    
    bool empty() {
        return one.empty()&&two.empty();
    }
};


然后就是卡哥提出了个优化,第二个队列就是用来存东西的,那么能不能把最后一个元素之前的所有元素都存到这个队列的后面,就是在这个队列的后面排队,这不就和用两个队列的操作其实是一回事?

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

    }
    
    void push(int x) {
        one.push(x);
    }
    
    int pop() {
        int num=one.size();
        while(--num){
            one.push(one.front());
            one.pop();
        }
        int res=one.front();
        one.pop();
       
        return res;

    }
    
    int top() {
        return one.back();
    }
    
    bool empty() {
        return one.empty();
    }
};


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/401976.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spring解决循环依赖

目录 什么是spring循环依赖 什么情况下循环依赖可以被处理&#xff1f; spring 如何解决循环依赖 创建A这个Bean的流程 答疑 疑问&#xff1a;在给B注入的时候为什么要注入一个代理对象&#xff1f; 初始化的时候是对A对象本身进行初始化&#xff0c;而容器中以及注入到B…

windows系统下载安装 memcached

好 之前说 带大家要用spring boot整合cache 其中包括 memcached 那么今天就带大家 下载安装一下 我们先访问地址 https://cloud.tencent.com/developer/article/2049577 这也是别人发的一个网址 里面放了他放在网上的资源 简单归纳为 windows 32位 链接 https://share.weiyun…

Java 学习和实践笔记(16):类的理解以及初始值

类&#xff0c;英文名叫class。基本上对应的就是语言里的名词。 比如&#xff0c;房子、人、树、花、汽车等等&#xff0c;这些名词&#xff0c;这些可以定义成类。 以房子为例&#xff0c;作为一个房子&#xff0c;它一定有相应的属性&#xff0c;比如房顶、墙、门、窗等等&…

redis复习笔记06(小滴课堂)

分布式锁核心知识介绍和注意事项 基于Redis实现分布式锁的几种坑 综合伪代码&#xff1a; 运行&#xff1a;

乱评?口碑不错老牌TOP期刊竟也被预警?预警名单再遭质疑!

【SciencePub学术】 2024年《国际期刊预警名单》 2024年预警原因&#xff1a;引用操纵 FUEL IF(2022)&#xff1a;7.4&#xff0c;JCR1区&#xff0c;中科院1区TOP 期刊数据指标 ISSN&#xff1a;0016-2361 IF(2022)&#xff1a;7.4 自引率&#xff1a;20.30% 年发文量&…

我有一个自解压的文件,格式EXE的.我想加密.怎么弄? 给人家要密码才能解压.

要加密一个自解压的EXE文件&#xff0c;使其需要密码才能解压&#xff0c;你可以使用加密软件或者对EXE文件进行一些特殊的处理。以下是一些建议的方法&#xff1a; 1. 使用加密软件 WinRAR&#xff1a;WinRAR是一个常用的压缩和解压缩工具&#xff0c;它也提供了加密功能。你…

大模型相关论文笔记

Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks 用于知识密集型NLP任务的检索增强生成 Facebook 2020 PDF CODE &#xff08;论文代码链接已失效&#xff0c;以上是最新链接&#xff09; 引言 大模型有幻觉问题&#xff08;hallucinations&#xff09;&…

UiAutomator2自动化测试框架带你玩转APP操作

前言 很早以前&#xff0c;我用uiautomatorjava实践过Android APP自动化测试&#xff0c;不过今天要提的不是uiautomator&#xff0c;而是uiautomator2。听起来uiautomator2像是uiautomator的升级版&#xff0c;但是这两款框架仅仅是名字上比较相似&#xff0c;实际上没有任何…

11、内网安全-横向移动NTLM-Relay重放Responder中继攻击LdapEws

用途&#xff1a;个人学习笔记&#xff0c;有所借鉴&#xff0c;欢迎指正&#xff01; 目录 前提知识&#xff1a; 一、横向移动-NTLM 中继攻击-Relay 重放-SMB 上线 1、CS权限转给MSF: 2、MSF: 3、添加路由&#xff1a; 4、smb_relay重发模块&#xff1a; 5、受控主机输…

关于dxf文件中,多段线凸度的计算

1.前言 在前面的CAD中的dxf文件解析(二)中讲到了一些CAD的dxf文件解析点、线、圆弧、圆、块等的思路。下面提供链接&#xff1a; &#xff08;二): CAD中的dxf文件解析(二):dxflib的使用_不爱学习 未完待续的博客-CSDN博客_dxflib (一)&#xff1a;CAD中的dxf文件解析(一):准备…

[ 2024春节 Flink打卡 ] -- Paimon

2024&#xff0c;游子未归乡。工作需要&#xff0c;flink coding。觉知此事要躬行&#xff0c;未休&#xff0c;特记 Flink 社区希望能够将 Flink 的 Streaming 实时计算能力和 Lakehouse 新架构优势进一步结合&#xff0c;推出新一代的 Streaming Lakehouse 技术&#xff0c;…

缓存篇—缓存雪崩、缓存击穿、缓存穿透

缓存异常会面临的三个问题&#xff1a;缓存雪崩、击穿和穿透。 其中&#xff0c;缓存雪崩和缓存击穿主要原因是数据不在缓存中&#xff0c;而导致大量请求访问了数据库&#xff0c;数据库压力骤增&#xff0c;容易引发一系列连锁反应&#xff0c;导致系统奔溃。不过&#xff0…

揭秘安秉网盾加密软件芯片制造业的5个神奇点

安秉网盾加密软件在芯片制造业有着许多神奇的应用点&#xff0c;以下是其中的五个&#xff1a; 芯片行业的数据的安全性与保密性 安秉网盾加密软件提供强大的加密算法和安全机制&#xff0c;可以对芯片研发行业的图纸及源代码文件进行加密保护&#xff0c;加密后的文件只能在安…

三、创建脚手架和脚手架分析

三、创建脚手架 一、环境准备 1、安装node.js **下载地址&#xff1a;**https://nodejs.org/zh-cn/界面展示 2、检查node.js版本 查看版本的两种方式 node -vnode -version 出现版本号则说明安装成功&#xff08;最新的以官网为准&#xff09; 3、为了提高我们的效率&…

VK36N3B SOP8/DFN8L抗噪3键触摸感应/高抗干扰触控IC/工控触摸触控IC BCD 输出

产品型号&#xff1a;VK36N3B 产品品牌&#xff1a;永嘉微电/VINKA 封装形式&#xff1a;SOP8/DFN8L 工程服务&#xff0c;技术支持&#xff01; 概述 VK36N3B具有3个触摸按键&#xff0c;可用来检测外部触摸按键上人手的触摸动作。该芯片具有较高的集成度&#xff0c;仅需…

关于RestCloud iPaaS平台的板块详解

当今的企业分工越来越细&#xff0c;上下游合作越来越紧密、各企业之间的业务系统需要相互协作完成业务、外部API依赖越来越多、同时企业系统运行在多个混合云环境及SaaS中&#xff0c;私有端大量业务系统与云端系统形成了错综复杂的集成关系&#xff0c;企业面临集成技术复杂多…

图表示学习 Graph Representation Learning chapter2 背景知识和传统方法

图表示学习 Graph Representation Learning chapter2 背景知识和传统方法 2.1 图统计和核方法2.1.1 节点层次的统计和特征节点的度 节点中心度聚类系数Closed Triangles, Ego Graphs, and Motifs 图层次的特征和图的核节点袋Weisfieler–Lehman核Graphlets和基于路径的方法 邻域…

[开源协议] 什么是MIT协议及其使用场景

什么是MIT协议? MIT协议是一种开放源代码软件授权协议&#xff0c;全称为Massachusetts Institute of Technology License。该协议允许自由地使用、复制、修改、合并、发布、分发、再授权和销售软件及其副本的任何部分。MIT协议要求在软件的所有副本中包含版权声明和许可声明…

机遇与挑战并存 企业级软件如何突围向上

如果企业级软件能够像TO C产品那样&#xff0c;购买者就是使用者&#xff0c;那企业级软件市场可能会大不一样。不过&#xff0c;事实并非如此。因为无论是商业模式&#xff0c;还是专业程度和用户群体&#xff0c;二者都有显著区别。而这种区别也使得我们不得不从一个全新视角…

辉辉数码:目前电视盒子哪个最好?目前性能最好的电视盒子

大家好&#xff0c;我是辉辉&#xff0c;上期测评发布后我收到了很多粉丝的反馈希望我这期能分享电视盒子推荐&#xff0c;看看目前电视盒子哪个最好。我购入了市面上最热门的十几款电视盒子对比配置、系统后整理了五款目前性能最好的电视盒子推荐给大家。 品牌型号&#xff1…
最新文章