代码随想录算法训练营第九天| 232.用栈实现队列,225.用队列实现栈
232. 用栈实现队列
232.用栈实现队列
这里用两个栈来模拟队列以此实现队列的先进先出,
注意点
1.dump()方法将stackin的元素移入到stackout的操作,是要将stackin的全部元素放到stackout中,所以用while循环判断 stackIn是否为空
2.新建栈的方法
class MyQueue {Stack<Integer> stackIn;Stack<Integer> stackOut;public MyQueue() {stackIn=new Stack<>();stackOut=new Stack<>();}public void push(int x) {// 将元素 x 推到队列的末尾stackIn.push(x);}public int pop() {//从队列的开头移除并返回元素dump();return stackOut.pop();}public int peek() {//返回队列开头的元素dump();return stackOut.peek();}public boolean empty() {// 如果队列为空,返回 true ;否则,返回 falsereturn stackIn.isEmpty()&&stackOut.isEmpty();}public void dump(){//如果stackout为空,那么把stackin的元素放到stackout中if(!stackOut.isEmpty()){return;}while(!stackIn.isEmpty()){//注意这里是while,这里如果是while(stackOut.isEmpty()),那么push进去一个就结束了// System.out.println(stackIn.pop());这里先pop了,导致后面empty()方法输出错误stackOut.push(stackIn.pop());}}
}/*** 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();* boolean param_4 = obj.empty();*/
225. 用队列实现栈
225.用队列实现栈
队列实现栈(需要二刷)
解法1 使用两个队列实现栈
- offer() 是往队列中添加一个元素,若队列已满而仍往队列中添加,则会返回false
- poll() 是删除队列中的第一个元素,在对空队列进行操作时,返回null
- peek() 是输出队列的第一个元素,队列为空时,返回null
class MyStack {//使用两个队列实现站Queue<Integer> q1;Queue<Integer> q2;public MyStack() {q1=new LinkedList<>();q2=new LinkedList<>();}public void push(int x) {q2.offer(x);//先给q2添加一个元素while(!q1.isEmpty()){q2.offer(q1.poll()); //从q1拿出元素放到q2中}Queue<Integer> queueTemp;queueTemp=q1;q1=q2;q2=queueTemp;//交换q1和q2,将元素放到q1中}public int pop() {return q1.poll();}public int top() {return q1.peek();}public boolean empty() {return q1.isEmpty();}
}/*** Your MyStack object will be instantiated and called as such:* MyStack obj = new MyStack();* obj.push(x);* int param_2 = obj.pop();* int param_3 = obj.top();* boolean param_4 = obj.empty();*/
解法2 使用1个队列实现栈
思路是每次向队列添加一个元素后,对队列中的元素进行重新排序
class MyStack {//使用单个队列实现站Queue<Integer> q1;public MyStack() {q1=new LinkedList<>();}//每次push进来一个数,都对队列里面的数字进行重新排列public void push(int x) {q1.offer(x);//添加一个数字int size=q1.size();while(size-->1){q1.offer(q1.poll());}}public int pop() {return q1.poll();}public int top() {return q1.peek();}public boolean empty() {return q1.isEmpty();}
}/*** Your MyStack object will be instantiated and called as such:* MyStack obj = new MyStack();* obj.push(x);* int param_2 = obj.pop();* int param_3 = obj.top();* boolean param_4 = obj.empty();*/
相关文章:
代码随想录算法训练营第九天| 232.用栈实现队列,225.用队列实现栈
232. 用栈实现队列 232.用栈实现队列 这里用两个栈来模拟队列以此实现队列的先进先出, 注意点 1.dump()方法将stackin的元素移入到stackout的操作,是要将stackin的全部元素放到stackout中,所以用while循环判断 stackIn是否为空 2.新建栈…...
求解二次方程
描述 编写一个程序,实现求解形如ax^2 bx c 0的二次方程的根。要求使用三个函数分别计算b^2 - 4ac大于0、等于0和小于0时的根,并在主函数中输出结果。 输入 输入三个浮点数a、b和c,分别表示二次方程的系数。 输出 输出二次方程的根&am…...
【hive 运维】hive注释/数据支持中文
文章目录 一. 设置mysql中的hive库二. hive-site.xml 设置三. 测试 hive支持中文需要关注两个方面: 设置hive 元数据库中的一些表设置hive-site.xml. 一. 设置mysql中的hive库 use hivedb; alter table TBLS modify column TBL_NAME varchar(1000) character se…...
架构,性能和游戏 《游戏编程模式》学习笔记
开新坑,准备把《游戏编程模式》这本书啃完。这是一本讲设计模式的书,针对游戏开发而作,写得很好。 以下是读书笔记,文末有原文链接 每个程序都有一定的软件架构,哪怕是全塞到main里也是一种架构好的架构可以把代码写成…...
Spring Bean的生命周期
文章目录 Spring Bean的生命周期加载Bean对象创建Bean对象构造对象填充属性初始化实例注册销毁 销毁 Spring Bean的生命周期 Spring Bean的生命周期就是指Bean对象从创建到销毁的过程,大体可以分为:实例化、属性赋值、初始化、使用、销毁。 加载Bean对象…...
基于量子同态的安全多方量子求和加密
摘要安全多方计算在经典密码学中一直扮演着重要的角色。量子同态加密(QHE)可以在不解密的情况下对加密数据进行计算。目前,大多数协议使用半诚实的第三方(TP)来保护参与者的秘密。我们使用量子同态加密方案代替TP来保护各方的隐私。在量子同态加密的基础上ÿ…...
前端自动化测试:确保质量和稳定性的关键步骤
文章目录 测试金字塔与前端测试层级1. 单元测试(Unit Testing)2. 组件测试(Component Testing)3. 集成测试(Integration Testing)4. 端到端测试(End-to-End Testing) 单元测试、集成…...
《Ansible自动化工具篇:Centos操作系统基于ansible工具一键远程离线部署之K8S1.24.12二进制版集群》
一、部署背景 由于业务系统的特殊性,我们需要针对不同的客户环境部署二进制版K8S集群,由于大都数用户都是专网环境,无法使用外网,为了更便捷,高效的部署,针对业务系统的特性,我这边编写了 基于a…...
Java实现十大经典排序算法之快速排序
0 算法简介 快速排序是一种高效率排序算法,它是对冒泡排序的一种改进,它也是一种不稳定排序算法。快速排序的核心是比较、交换和递归。 在待排序数组中指定一个基准元素pivot(一般选取数组首元素),使得数组排序之后基…...
【0803作业】创建两个线程:其中一个线程拷贝图片的前半部分,另一个线程拷贝后半部分(4种方法)
方法一:使用pthread_create、pthread_exit、pthread_join函数【两个线程不共用同一份资源】 先在主函数创建并清空拷贝的目标文件,再创建两个线程,在两个线程内部同时打开要读取的文件以及要拷贝的目标文件(两个线程不共用同一份资…...
php运算符的短路特性
php运算符的短路特性 1、逻辑运算符:逻辑与(&&)和逻辑或(||),存在着短路特性 PHP中有以下两个运算符具有短路的特性,他们是逻辑运算符的逻辑与(&&)和逻辑或(||&am…...
C语言假期作业 DAY 13
一、选择题 1、如果 x2014 ,下面函数的返回值是( ) int fun(unsigned int x) { int n 0; while(x 1) { n; x x | (x 1); } return n; } A: 20 B: 21 C: 23 D 25 答案解析 正确答案:C 这个作用是对整型中0的个数进行统计&…...
以产品经理的角度去讲解原型图---会议OA项目
目录 一.前言 二.原型图 2.1 原型图是什么 3.1 原型图的作用 三.演示讲解 3.1 项目背景 3.2 项目介绍 3.2.1 会议管理(会议的发起,通知) 3.2.2 投票管理(会议的流程重大决策记录) 3.2.3 会议室管理 3.2.4 系统管…...
C++ 外部变量和外部函数
1.外部变量 如果一个变量除了在定义它的源文件中可以使用外,还能被其他文件使用,那么就称这个变量为外部变量。命名空间作用域中定义的变量,默认情况下都是外部变量,但在其他文件中如果需要使用这一变量,需要用extern…...
C# Onnx Paddle模型 OCR识别服务
效果 项目 可运行程序exe下载 Demo(完整源码)下载...
MCUXpresso for VS Code -- 基于VSCode开发RT1176
MCUXpresso for VS Code 是nxp推出插件,旗下MCX LPC, Kinetis和i.MX rt等MCU,都能在VS Code平台进行嵌入式开发。功能框图如下: 前期准备: 软件环境: windows(实际可以跨系统,linux和mac没有测试) VS Code ninja CMa…...
MySQL的使用——【初识MySQL】第二节
MySQL的使用——【初识MySQL】第二节 文章目录 MySQL环境变量的配置(如使用Navicat可忽略)使用命令行连接MySQL(如使用Navicat可忽略)步骤注意 NavicatNavicat的下载Navicat的使用连接MySQL新建表 总结总结 MySQL环境变量的配置&a…...
MySQL最终弹-并发(脏读,不可重复读,幻读及区别),JDBC的使用和安装,最全万字
一、💛并发基本概念 并发的基本意思: 什么是并发呢?简单的理解就是同一时间执行 服务器同一时刻,给多个客户端提供服务~~,这两个客户端都可以给服务器提交事务。 如果提交两个事务,改…...
⌈C++⌋从无到有了解并掌握C++面向对象三大特性——封装、继承、多态
前置知识:类和对象 参考书籍:《C Primer 第五版》 目录 什么是面向过程?什么是面向对象? 一、封装 1、封装的含义以及如何实现封装 1.1 访问限定符(访问说明符) 1.2 什么是封装? 2、封装的优点…...
Element的el-select下拉框多选添加全选功能
先看效果图 全选: 没有选中时: 选中部分: 作者项目使用的是vue3写法,如果是vue2的自己转换一下 html代码: js代码: 拓展 另一种方法,如果不想使用勾选框,可以试试下面的方…...
LingBot-Depth-Pretrain-ViTL-14数据结构优化实战:提升推理效率
LingBot-Depth-Pretrain-ViTL-14数据结构优化实战:提升推理效率 最近在项目里用上了LingBot-Depth-Pretrain-ViTL-14这个深度补全模型,效果确实让人眼前一亮。不过,随着处理的数据量越来越大,特别是面对复杂的场景和连续帧序列时…...
新手必看!霜儿-汉服-造相Z-Turbo保姆级入门:从部署到生成第一张汉服图
新手必看!霜儿-汉服-造相Z-Turbo保姆级入门:从部署到生成第一张汉服图 想用AI生成古风汉服美图却不知从何入手?本文将带你零基础玩转"霜儿-汉服-造相Z-Turbo"模型,从部署到生成第一张汉服图只需10分钟。无需编程基础&a…...
WeMod增强工具完全指南:解锁高级功能的终极免费方案
WeMod增强工具完全指南:解锁高级功能的终极免费方案 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/gh_mirrors/we/Wand-Enhancer WeMod增强工具(Wand-Enhance…...
CTF流量分析终极指南:5分钟掌握CTF-NetA从入门到精通
CTF流量分析终极指南:5分钟掌握CTF-NetA从入门到精通 【免费下载链接】CTF-NetA CTF-NetA是一款专门针对CTF比赛的网络流量分析工具,可以对常见的网络流量进行分析,快速自动获取flag。 项目地址: https://gitcode.com/gh_mirrors/ct/CTF-Ne…...
Java的嵌套类与内部类在闭包实现与内存泄漏方面的差异
Java中的嵌套类与内部类虽然语法相似,但在闭包实现与内存泄漏风险上存在关键差异。理解这些差异对于编写高效、安全的代码至关重要。本文将深入探讨两者的区别,帮助开发者避免常见陷阱。 **闭包实现机制差异** 嵌套类(静态内部类࿰…...
GME-Qwen2-VL-2B-Instruct入门STM32开发:识别原理图并生成初始化代码注释
GME-Qwen2-VL-2B-Instruct入门STM32开发:识别原理图并生成初始化代码注释 1. 引言 刚开始学STM32的时候,你是不是也对着密密麻麻的原理图发过愁?那些弯弯曲曲的线,各种奇怪的符号,还有一堆英文缩写,看着就让…...
像素史诗智识终端实战体验:如何用贤者之智快速生成深度研究报告
像素史诗智识终端实战体验:如何用贤者之智快速生成深度研究报告 1. 引言:当科研遇上像素冒险 在传统的研究报告撰写过程中,我们常常面临两个核心痛点:一是枯燥的写作流程让人望而生畏,二是专业内容的深度和逻辑性难以…...
容器安全扫描:镜像漏洞检测与运行时保护
容器安全扫描:镜像漏洞检测与运行时保护 随着容器技术的广泛应用,其安全性问题日益凸显。容器安全扫描成为保障云原生环境安全的关键环节,涵盖镜像构建阶段的漏洞检测与运行时的动态防护。本文将深入探讨容器安全的核心实践,帮助…...
从错误码到精准定位:307系列基站定位实战排障指南
1. 当你的设备突然"失联":307系列基站定位排障入门 第一次用ML307A模组调试基站定位功能时,我盯着串口助手连续跳出的126错误码整整半小时。就像在玩解谜游戏,设备明明显示网络信号满格,AT指令也返回了OK,但…...
让微信网页版重新可用:wechat-need-web浏览器插件完全攻略
让微信网页版重新可用:wechat-need-web浏览器插件完全攻略 【免费下载链接】wechat-need-web 让微信网页版可用 / Allow the use of WeChat via webpage access 项目地址: https://gitcode.com/gh_mirrors/we/wechat-need-web 还在为微信网页版无法登录而烦恼…...
