《算法通关村—用栈实现队列|用队列实现栈问题解析》

news2024/12/24 0:53:15

《算法通关村—用栈实现队列|用队列实现栈问题解析》

用栈实现队列

LeetCode232 先看题意: 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):

void push(int x) 将元素 x 推到队列的末尾 
int pop() 从队列的开头移除并返回元素 
int peek() 返回队列开头的元素 
boolean empty() 如果队列为空,返回 true ;否则,返回 false

利用两个栈,一个栈进行出栈,一个栈进行入栈,如果出的栈为空的时候,都把入栈中的元素压入出栈,这样一个倒过来的顺序,就成了队列的先入先出FIFO。
在这里插入图片描述

代码

package AlgorithmFifth;

import java.util.Deque;
import java.util.LinkedList;

/**
 * 利用栈实现队列
 */
public class UseStackImplQueue {
    Deque<Integer> inStack;
    Deque<Integer> outStack;
    public UseStackImplQueue(){
        inStack = new LinkedList<Integer>();
        outStack = new LinkedList<Integer>();
    }
    public void push(int x) {
        inStack.push(x);
    }

    public int pop(){
        if (outStack.isEmpty()){
            in2out();
        }
        return outStack.pop();
    }

    public int peek(){
        if (outStack.isEmpty()){
            in2out();
        }
        return outStack.peek();
    }
    public boolean empty(){
        return inStack.isEmpty() && outStack.isEmpty();
    }
    private void in2out(){
        while(!inStack.isEmpty()) {
            outStack.push(inStack.pop());
        }
    }

    public static void main(String[] args) {
        UseStackImplQueue queue = new UseStackImplQueue();
        queue.push(1);
        queue.push(2);
        System.out.println(queue.pop());
        System.out.println(queue.pop());
    }
}

用队列实现栈

leetcode225 先看题意: 请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。

void push(int x) 将元素 x 压入栈顶。 
int pop() 移除并返回栈顶元素。 
int top() 返回栈顶元素。 
boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。

这个其实也很好理解怎么实现,利用两个队列,一个队列存储新插入的元素,另一个队列存储处理好成栈顺序的队列,先把处理好的队列的元素全部在拉出放入存有新元素队列 的队列,然后令处理的队列等于刚刚处理完的队列,语言不好理解,看图立马懂!

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

可以很明显的观察到,queue1就是栈的顺序。

星球推广

近期在自学 Java 做项目,加入了一个编程学习圈子,里面有编程学习路线和原创的项目教程,感觉非常不错。还可以 1 对 1 和大厂嘉宾交流答疑,也希望能对大家有帮助,扫 ⬇️ 二维码即可加入。

在这里插入图片描述

也可以点击链接:我正在「编程导航」和朋友们讨论有趣的话题,你⼀起来吧?

也可以加我QQ(2837468248)咨询说明来意!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mac 解决 APP 快捷键冲突

打开 Mac 系统设置键盘->键盘快捷键->App快捷键->添加快捷键&#xff08;加号&#xff09;->标题需要和tab名称完全一致&#xff08;包括中英文、标点符号等&#xff0c;如下图&#xff09;设置快捷键即可 Reference&#xff1a; https://www.cnblogs.com/Questio…

qt-gui

C常用GUI开发框架Qt&#xff0c;开始支持Python 2018-12-24 12:49 C的GUI接口开发框架Qt宣布&#xff0c;在5.12版本中开始支持Python&#xff0c;Python开发人员现在可以使用所有的Qt API&#xff0c;目前仍在技术预览版的阶段&#xff0c;但官方也承诺&#xff0c;正式版将…

BUUCTF_练[CISCN2019 华北赛区 Day1 Web5]CyberPunk

[CISCN2019 华北赛区 Day1 Web5]CyberPunk 文章目录 [CISCN2019 华北赛区 Day1 Web5]CyberPunk掌握知识解题思路代码分析paylaod的构建正式解题 关键paylaod 掌握知识 ​ php伪协议读取文件&#xff1b;源码泄露hint &#xff1b;代码审计 发现二次注入点&#xff1b;SQL语句的…

配置文件草稿

SpringBoot配置文件是用来保存SpringBoot项目当中所有重要的数据的&#xff0c;比如说数据库连接信息&#xff0c;数据库的启动端口&#xff0c;如果端口被占用了&#xff0c;那么就可以随时修改&#xff1b; 1)比如说我们之前再写JDBC的代码的时候&#xff0c;要去写链接字符串…

Figma怎么用?看这篇最全攻略,用完回不去了!

Figma是什么&#xff1f;设计师朋友们一定不会陌生&#xff0c;它以轻体量、高设计效率、超强协作性以及设计和开发一体化等特点风靡一时&#xff0c;在全球的数字产品设计领域范围内崭露头角&#xff0c;得到海量用户和无数企业的认可和选择&#xff08;真棒啊&#xff09;。 …

成绩不公开,如何发成绩

亲爱的老师们&#xff0c;有没有在学期中疯狂整理成绩单&#xff0c;又担心成绩私发引起混乱的烦恼&#xff1f;今天就让我们一起探索如何利用各种工具和代码&#xff0c;实现学生自主查询成绩的便捷方式吧&#xff01; 成绩查询系统简介 成绩查询系统是一款方便学生和老师查询…

自主查询成绩

今天我们来揭秘如何制作成绩查询系统&#xff0c;让学生可以自行查看成绩&#xff01; 成绩查询系统可以帮助学生和老师轻松管理、发布、查看成绩。无论是期中考试、期末考试&#xff0c;作业查询还是平时的课堂表现&#xff0c;都可以通过成绩查询系统来及时掌握。 让我们一起…

双十一限时优惠!沃通SSL证书、代码签名证书年度好价

2023年11月01日至11月11日&#xff0c;沃通2023“双十一限时特惠”活动&#xff0c;精选9款SSL证书、国密SSL证书、代码签名证书产品推出年度好价&#xff0c;部分SSL证书产品低至5折&#xff0c;更有EV代码签名证书爆款特惠&#xff01;多种数字证书一站式采购&#xff0c;解决…

京东数据分析:2023年9月京东饮料行业品牌销售排行榜

鲸参谋监测的京东平台9月份饮料市场销售数据已出炉&#xff01; 9月份&#xff0c;京东饮料市场整体销售下滑。鲸参谋数据显示&#xff0c;今年9月&#xff0c;京东平台饮料市场的销量将近750万&#xff0c;环比降低约9%&#xff0c;同比降低约12%&#xff1b;销售额约4.4亿&am…

外网远程登录之 NAT server

案例&#xff1a; 外网远程登录内网SW&#xff1a; 需求 1.内网的PC都可以访问Server1 2.外网的R2可以远程登录SW1&#xff0c; 用户名和密码是&#xff1a;HCIE/hehe 需求 1.内网的PC都可以访问Server1 2.外网的R2可以远程登录SW1&#xff0c; 用户名和密码是&#xff1a;HCI…

腾讯云优惠券如何领取?详细教程来了!

腾讯云优惠券是腾讯云为广大用户提供的优惠福利&#xff0c;包括代金券和折扣券&#xff0c;大家可以通过领取优惠券&#xff0c;在购买腾讯云产品时享受优惠。本文将为大家介绍如何领取腾讯云优惠券&#xff0c;以及领取后的使用规则。 一、腾讯云优惠券领取方法 腾讯云优惠券…

2022最新版-李宏毅机器学习深度学习课程-P32 Transformer

一、 seq2seq 1. 含义 输入一个序列&#xff0c;机器输出另一个序列&#xff0c;输出序列长度由机器决定。 文本翻译&#xff1a;文本至文本&#xff1b;  语音识别&#xff1a;语音至文本&#xff1b;  语音合成&#xff1a;文本至语音&#xff1b;  聊天机器人&#…

window11最新版终于可以取消任务栏合并了

windows11一个软件开了多个窗口之后&#xff0c;会自动合并任务栏&#xff0c;很不方便选择其中一个窗口&#xff0c;且没有选项能关闭这一配置 今日发现&#xff0c;最新版完善了这一功能&#xff0c;现在可以关闭自动合并任务栏了 右击任务栏&#xff0c;选择任务栏设置选择…

518抽奖软件,奖项相互穿插抽奖的方法

518抽奖软件简介 518抽奖软件&#xff0c;518我要发&#xff0c;超好用的年会抽奖软件&#xff0c;简约设计风格。 包含文字号码抽奖、照片抽奖两种模式&#xff0c;支持姓名抽奖、号码抽奖、数字抽奖、照片抽奖。(www.518cj.net) 奖项穿插的方法 比如公司年会&#xff0c;共…

程序员如何提高自己的代码能力呢?

前言 程序员如何提高代码能力&#xff1f;个人认为代码能力比较强的程序员应该具备良好的编码习惯并可以输出高质量的代码实现的特征。那么程序员如何提高代码能力的问题&#xff0c;就变成了怎么才能成为一个具备良好编码习惯并可以输出高质量代码实现的程序员。其实很简单&am…

打造智慧矿山-触觉智能软通动力强强联合,助力矿鸿生态

2023年10月25-28日&#xff0c;两年一度的中国国际煤炭采矿技术交流及设备展览会在首都北京隆重召开&#xff0c;本届大会以“智能引领未来&#xff0c;绿色共享发展”为主题&#xff0c;作为国内煤炭行业的顶级盛会&#xff0c;由中国煤炭工业协会牵头举办的这次展出吸引了全世…

美术培训服务预约小程序的作用是什么

线下培训教育机构很多&#xff0c;涉及到的行业及种类很多&#xff0c;美术培训就是其中较为重要的一类&#xff0c;尤其是青少年群体&#xff0c;其拓展度很深&#xff0c;而对商家来说&#xff0c;其主要生源在本地同城&#xff0c;因此品牌宣传和渠道发展、学员赋能很重要。…

同花顺滑块

要是不去尝试就先放弃&#xff0c;我会对自己很失望。 网址&#xff1a;https://upass.10jqka.com.cn/login太无聊了&#xff0c;学了一下&#xff0c;验证码全是明文&#xff0c;没啥加密的。 这个都没啥可以说的&#xff0c;然后的话就没然后了 。 好心人留下源码&#xff1…

使用 docker-compose 部署 SpringBoot 项目 nginx 部署前端

安装 Docker 自动下载 curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun检查是否安装成功 docker -v配置镜像仓库 更换镜像加速器&#xff08;推荐阿里云&#xff09; 容器镜像服务 (aliyun.com) 扫码登录后找到镜像仓库 每个人都不同&#xff0c;复…

基于深度学习的人脸识别系统 计算机竞赛

前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于深度学习的人脸识别系统 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f9ff; 更多资料, 项目分享&#xff1a; https://gitee.com/dancheng-senior/…