LeetCode.232. 用栈实现队列

题目

232. 用栈实现队列

分析

先了解一下栈和队列的特点:

  • 栈:先进后出
  • 队列:先进先出

想用栈实现队列的特点,就需要使用两个栈。因为两个栈就可以将列表倒序。
假设第一个栈 s1 = [1,2,3],第二个栈 s2 = [] 。若循环执行 s1元素出栈并且添加到栈 s2直到栈 s1为空,则s1 = []s2 = [3,2,1],即栈s2元素为栈s1元素倒序。

最终方法:

  1. 加入元素的时候,只往栈s1里面加入。
  2. 弹出元素的时候,先弹出栈s2里面的元素,如果s2为空,则把s1里面的元素放入s2,然后弹出s2的元素。
  3. 判断是否为空,s1s2同时为空,才为空

代码

class MyQueue {Stack<Integer> s1;Stack<Integer> s2;public MyQueue() {s1 = new Stack<>();s2 = new Stack<>();}public void push(int x) {s1.push(x);}public int pop() {if(!s2.isEmpty()) return s2.pop();if(!s1.isEmpty()) {while(!s1.isEmpty()) {s2.push(s1.pop());}return s2.pop();}return -1;}public int peek() {if(!s2.isEmpty()) return s2.peek();if(!s1.isEmpty()) {while(!s1.isEmpty()) {s2.push(s1.pop());}return s2.peek();}return -1;}public boolean empty() {return s2.isEmpty() && s1.isEmpty();}
}/*** 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();*/

在这里插入图片描述

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

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

相关文章

php压缩一个文件,多个文件,目录生成zip压缩包,压缩并下载zip包

我们将一个文件生成一个压缩包。 <?php $path "c:/wamp/www/log.txt"; $filename "test.zip"; $zip new ZipArchive(); $zip->open($filename,ZipArchive::CREATE); //打开压缩包 $zip->addFile($path,basename($path)); //向压缩包中添…

STM32FreeRTOS消息队列(STM32Cube高效开发)

文章目录 一、队列&#xff08;一&#xff09;简介&#xff08;二&#xff09;FreeRTOS队列特点1、入队阻塞&#xff1a;队列满了&#xff0c;此时无法继续写入数据2、出队阻塞&#xff1a;队列为空&#xff0c;此时无法读出数据3、入队阻塞解除&#xff0c;有多个任务等待时&a…

【李沐论文精读】GAN精读

论文&#xff1a;Generative adversarial nets 参考&#xff1a;GAN论文逐段精读、生成对抗网络、李沐视频精读系列 一、介绍 什么是GAN? GAN(Generative adversarial network&#xff0c;生成对抗网络&#xff09;&#xff0c;它由生成器G&#xff08;Generator Neural Netwo…

原理篇-- 定时任务xxl-job-服务端(admin)项目执行器注册执行器任务状态回调

文章目录 前言一、执行器注册&执行器任务状态回调触发时机&#xff1a;二、服务端接收执行器和任务执行状态请求&#xff1a;2.1 JobApiController&#xff1a;2.2 AdminBiz 接口:2.3 AdminBiz 接口实现类AdminBizImpl&#xff1a;2.4 执行器注册&#xff1a;2.5 执行器的移…

长电科技斥资45亿元收购晟碟半导体80%股权

2024年3月3日&#xff0c;西部数据公司旗下间接全资子公司SanDisk中国有限公司与长电科技有限公司&#xff08;JCET集团有限公司的全资子公司&#xff09;签订了股权购买协议。根据协议&#xff0c;SanDisk中国将向JCET出售其间接全资子公司、在中国注册成立的外商独资有限责任…

如何把已安装的nodejs高版本降级为低版本

第一步.先清空本地安装的node.js版本 按健winR弹出窗口&#xff0c;键盘输入cmd,然后敲回车&#xff08;或者鼠标直接点击电脑桌面最左下角的win窗口图标弹出&#xff0c;输入cmd再点击回车键&#xff09; 然后进入命令控制行窗口&#xff0c;并输入where node查看之前本地安装…

HTML(基本标签)

HTML标签 <div>div标签</div> <span>这是一个span标签</span> <p>段落标签</p> 图片标签 --相对路径 <img src"../images/手.bmp/" alt"图像显示不出来的时候用文字替换" title"这是一个提示文本"…

android开发游戏加速器,Android架构组件Room功能详解

Java基础 Java Object类方法HashMap原理&#xff0c;Hash冲突&#xff0c;并发集合&#xff0c;线程安全集合及实现原理HashMap 和 HashTable 区别HashCode 作用&#xff0c;如何重载hashCode方法ArrayList与LinkList区别与联系GC机制Java反射机制&#xff0c;Java代理模式Jav…

【Spring Cloud原理详解】介绍

Spring Cloud Spring Cloud基于Spring Boot提供了在分布式系统&#xff08;如配置管理、服务发现、断路器、智能路由、微代理、控制总线&#xff09;中常见模式的一站式解决方案&#xff0c;Spring Cloud使用了Spring Boot的开发便利性&#xff0c;简化了分布式系统基础设施的…

dolphinescheduler调用API

&#xff08;作者&#xff1a;陈玓玏&#xff09; 1. 打开api文档 api文档地址&#xff1a;http://{api server ip}:12345/dolphinscheduler/swagger-ui/index.html?languagezh_CN&langcn&#xff0c;我是用k8s部署的&#xff0c;所以ip和端口是由service决定的&#xf…

Spring MVC 面试题及答案整理,最新面试题

Spring MVC中的DispatcherServlet是什么&#xff0c;它如何工作&#xff1f; DispatcherServlet是Spring MVC中的核心组件&#xff0c;负责协调不同的请求处理器。它的工作流程包括&#xff1a; 1、请求接收&#xff1a; 接收HTTP请求&#xff0c;并将其转发到相应的处理器。…

鱼哥赠书活动第⑩期:一本书讲透ChatGPT,实现从理论到实践的跨越!大模型技术工程师必读

鱼哥赠书活动第⑩期&#xff1a; 内容简介&#xff1a;作者简介&#xff1a;读者对象&#xff1a;直播预告&#xff1a;购书链接&#xff1a;赠书抽奖规则:往期赠书福利&#xff1a; OpenAI 在 2022 年 11 月推出了人工智能聊天应用—ChatGPT。它具有广泛的应用场景&#xff0c…

【Python 识别某滑块的距离】今天来换思维搞滑块,不用识别库,几行代码就能搞定,仅供学习

写作日期&#xff1a;2024.03.05 使用工具&#xff1a;Python 温馨提示&#xff1a;此方法仅对有完整图和缺口图的滑块有效&#xff0c;可精准识别出缺口要滑动的距离 文章全程已做去敏处理&#xff01;&#xff01;&#xff01; 【需要做的可联系我】 AES处理&#xff08;直接…

SpringCloud之OpenFeign入门与实战系列

目录 一、什么是 OpenFeign? 1.1 OpenFeign 功能升级 二、OpenFeign超时重试机制 2.1 超时重试机制 2.2 自定义超时重试机制 2.2.2 自定义超时重试类 2.3 OpenFeign 超时重试的底层原理 一、什么是 OpenFeign? OpenFeign 的全称为 Spring Cloud OpenFeign(下文简称 Op…

[Uniapp]携带参数跳转界面(两种方法)

一、方法1&#xff1a;路由携参 假设现在有两个界面&#xff1a;界面A和界面B。并要由界面A跳转到界面B&#xff0c;则我们可以使用 uni.navigateTo({}) 跳转界面时&#xff0c;将参数附加在URL后&#xff0c…

newSingleThreadExecutor和newFixedThreadPool(1)的区别

维护仅有一个线程的线程池有如下两种方式&#xff0c;正常使用的情况下&#xff0c;二者差异不大&#xff1b;复杂使用环境下&#xff0c;二者存在细微的差异。用newSingleThreadExecutor方式创建的线程池在任何时刻至多只有一个线程&#xff0c;因此可以理解为用异步的方式执行…

Android中 在目录下创建文件的权限添加 流程

Android中读写目录涉及到的权限一般有三个&#xff0c;一个是selinux, 另一个是用户组, 还有一个是目录本身权限问题&#xff0c;本文章针对这三点做详细解析 目录 一: Selinux权限问题 1: 先查看进程SSSPID的标签 2: 再查看要访问的目录的标签 二: 被访问目录本身权限问…

《剑指offer》14--剪绳子(整数拆分)[C++]

目录 题目描述 贪心算法 输出结果 题目描述 把一根绳子剪成多段&#xff0c;并且使得每段的长度乘积最大。 给定一个正整数 n&#xff0c;将其拆分为至少两个正整数的和&#xff0c;并使这些整数的乘积最大化。 返回你可以获得的最大乘积。 示例 1: 输入: 2 输出: 1 解释:…

Android开发技术总结,附项目源码

今天本文主要讲解&#xff1a; APK文件反编译 什么是反编译如何防止反编译APK文件的基本构造 APK加固的方案原理 APK加固总体架构APK打包基本流程Dex文件的意义 AES加密项目实战 APK加固项目实战APK脱壳技术实战 一.APK文件反编译 1.什么是反编译 定义&#xff1a; 利用…

Java后端核心——Servlet

目录 一.概述 二.基础实现 1.导入坐标 2.定义实现类 3.注解 4.访问Servlet 三.执行流程 四.生命周期 1.加载和实例化 2.初始化 3.请求处理 4.服务终止 五.方法 1.init 2.service 3.destroy 4.getServletInfo 5.getServletConfig 六.体系结构 七.urlPatter…