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.hqwc.cn/news/512568.html

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

相关文章

CAN通信篇 - Can模块配置(一)

文章目录 CanConfigSetCanControllersCanControllerBaudrateConfigCanFilterMask CanHardwareObjectsCanGeneralCanMainfunctionRWPeriods 总结 Can模块的是CAN控制器模块&#xff0c;该模块比较简单&#xff0c;只包括三个部分&#xff1a;Can控制器、Can硬件对象&#xff08;…

VMvare安装17安装centos8教程

阿里镜像站&#xff1a;https://mirrors.aliyun.com/centos centos-8-isos-x86_64安装包下载_开源镜像站-阿里云 https://mirrors.aliyun.com/centos/8/isos/x86_64/CentOS-8.5.2111-x86_64-dvd1.iso 将上面的链接复制到迅雷进行高速下载 vmvare安装配置教程安装教程 CentO…

揭秘大气颗粒物与VOCs:PMF源解析技术全解析

在现今日益严峻的环境问题中&#xff0c;大气颗粒物和臭氧污染尤为突出&#xff0c;它们不仅深刻影响着全球气候和生态环境&#xff0c;更对人体健康构成了严重威胁。为了有效应对这一挑战&#xff0c;我们首先需要深入了解颗粒物和臭氧的来源&#xff0c;特别是臭氧的前体物之…

代码随想录训练营第37天 | LeetCode 738.单调递增的数字、LeetCode 968.监控二叉树、

目录 LeetCode 738.单调递增的数字 文章讲解&#xff1a;代码随想录(programmercarl.com) 视频讲解&#xff1a;贪心算法&#xff0c;思路不难想&#xff0c;但代码不好写&#xff01;LeetCode:738.单调自增的数字_哔哩哔哩_bilibili 思路 ​​​​​​LeetCode 968.监控二…

鸿蒙学习-数据持久化

应用数据持久化概述 应用数据持久化&#xff0c;是指应用将内存中的数据通过文件或数据库的形式保存到设备上。内存中的数据形态通常是任意的数据结构或数据对象&#xff0c;存储介质上的数据形态可能是文本、数据库、二进制文件等。 HarmonyOS标准系统支持典型的存储数据形态…

Maven构建MapReduce程序上传至虚拟机运行找不到jdbc.Driver

问题前置&#xff1a; Maven构建MapReduce程序&#xff0c; pom中已经写入jdbc驱动&#xff0c; 上传至虚拟机运行扔找不到jdbc.Driver, 具体报错&#xff1a;java.lang.RuntimeException: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 第一步&#xff1a;确认pom…

【AI视野·今日Sound 声学论文速览 第五十一期】Mon, 4 Mar 2024

AI视野今日CS.Sound 声学论文速览 Mon, 4 Mar 2024 Totally 6 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Sound Papers VoxGenesis: Unsupervised Discovery of Latent Speaker Manifold for Speech Synthesis Authors Weiwei Lin, Chenhang He, Man Wai Mak, …

城市平均高温、平均低温数据爬取与可视化

爬取历史天气网站数据 从天气网站爬取指定城市、指定时间范围内的天气数据&#xff0c;并将数据保存为CSV文件。具体而言&#xff0c;它使用了Selenium库来模拟浏览器行为&#xff0c;以便获取动态加载的页面内容。 主要步骤如下&#xff1a; 读取城市信息和代理IP信息&…

html样式排版

<template><div class"box"><div class"header">头部</div><div class"main"><div class"left">菜单</div><div class"right"><div class"right-contentr"&g…

超分之Real-ESRGAN官方代码解读

文章目录 高阶退化过程生成用于一阶、二阶退化过程的各种模糊核&#xff0c;以及sinc滤波器具体的一阶、二阶退化过程 高阶退化过程 生成用于一阶、二阶退化过程的各种模糊核&#xff0c;以及sinc滤波器 文件位置 “basicsr/data/realesrgan_dataset.py” # ------------------…

中国企业走向世界,新加坡共和理工学院师生首站到访开源网安交流

近年来&#xff0c;中国企业在众多领域突飞猛进&#xff0c;不断追赶国际头部企业技术水平&#xff0c;甚至在某些领域已经达到国际领先水平&#xff0c;国内企业的最佳实践逐渐成为了全球精英学习研究的对象。 3月4日&#xff0c;由新加坡五所国立理工学院之一的新加坡共和理工…

HarmonyOS—编译构建概述

编译构建是将应用/服务的源代码、资源、第三方库等&#xff0c;通过编译工具转换为可直接在硬件设备上运行的二进制机器码&#xff0c;然后再将二进制机器码封装为HAP/APP软件包&#xff0c;并为HAP/APP包进行签名的过程。其中&#xff0c;HAP是可以直接运行在模拟器或真机设备…